mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.7.28
Original announce message: VDR developer version 1.7.28 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.28.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.27-1.7.28.diff MD5 checksums: 3ccff2dcc42d112e23dd64f2c39f02f1 vdr-1.7.28.tar.bz2 7249ead4aca4b24e53d49d11c67e1613 vdr-1.7.27-1.7.28.diff WARNING: ======== This is a developer version. Even though I use it in my productive environment. I strongly recommend that you only use it under controlled conditions and for testing and debugging. The new default skin "LCARS" displays the signal strengths and qualities of all devices in its main menu. For devices that have an stb0899 frontend chip (like the TT-budget S2-3200) retrieving this information from the driver is rather slow, which results in a sluggish response to user input in the main menu. To speed this up you may want to apply the patches from From the HISTORY file: - Fixed cPixmapMemory::DrawEllipse() for quadrants -1 and -4. - Fixed getting the maximum short channel name length in case there are no short names at all (reported by Derek Kelly). - The new function cDevice::DeviceType() returns a string identifying the type of the given device. - Now limiting the number of characters of a channel's (short) name to 16 in the schedules menus, to keep that column from getting overly wide in case there is a channel with a very long name that has no short name. - Fixed EPG scan on systems with only a single DVB device that use software output (reported by Juergen Lock). - Skins can now inquire the menu category for which their cSkinDisplayMenu is currently being used. This can be done either through a call to cSkinDisplayMenu::MenuCategory() or by reimplementing cSkinDisplayMenu::SetMenuCategory(). This information allows a skin to use special icons or decorations for the various types of menus in VDR. - The new setup option "DVB/Standard compliance" can be used to switch between different variations of the DVB standard (thanks to Rolf Ahrenberg). Currently there is "DVB" (for the original DVB standard) and "ANSI/SCTE", which is used to properly handle certain private stream types. - The disk usage is no longer automatically added to the title of the main and "Recordings" menus. This has always been a mekeshift solution and it is now up to the individual skin if, where and how it wants to display this information. A skin can use the new cVideoDiskUsage class to implement such a display. For compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode" (i.e. curses) have been changed to behave like before. Other skins may want to display the disk usage in totally different ways. - A cOsdMenu can now handle skins that display different numbers of items in the various menu categories. - OSD and skin are now reinitialized after a plugin setup page has been confirmed, to have them react immediately in case any change to a plugin's setup parameter has an effect on the OSD. - The Timers list is now marked as modified whenever a recording starts or ends. - Fixed cDevice::StillPicture(), making sure it doesn't call the derived class's function if no buffer has been allocated (reported by Marcus Roscher). - Fixed the SVDRP command UPDR, which didn't update the global recordings list (reported by Lars Hanisch). - cControl::Control() now has an additional boolean parameter, which can be set to true to get the current player control even if it is hidden. - The new functions cControl::GetRecording() and cControl::GetHeader() can be used to retrieve information about what the current player is playing. - Fixed a possible high CPU load when pausing replay (thanks to Reinhard Nissl). - Fixed character comparisons in cSubtitleObject::DecodeCharacterString() (reported by Reinhard Mantey). - Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(), because it might inadvertently be called with a 'char *' as the second argument on some compilers and cause a crash (reported by Sundararaj Reel). - Removed the "bondedMasterFailed" mechanism from cDvbTuner, because it caused problems with the EPG scan in case a transponder is not receivable in a setup with bonded devices (reported by Michael Schneider). - Making sure setup strings don't contain any newline characters (thanks to Joachim Wilke). - The new member function cSkinDisplayReplay::SetRecording() allows a skin to display more information about the currently played recording. - Fixed a mismatched 'delete' in cSchedules::SetEpgDataFileName() (thanks to Reinhard Mantey). - The DrawText() functions of the OSD now accept the new alignment flag taBorder, which triggers keeping a proper distance from the edge that taLeft or taRight aligns to. - Fixed checking for UTF-8 support in cFont::Bidi() (reported by Torsten Lang). - If a recording has no info file, the 'title' of the recording's info is now set to the recording's name. - cVector::Clear() now reinitializes any previously used members. - Fixed resetting CAMs (thanks to Marco Skambraks). - The new function RgbShade() (include osd.h) can be used to generate a brighter or darker version of a given color. - The new class cSortedTimers can be used to quickly get a list of all timers, sorted by their start time. - The new skin "LCARS" is an enhanced version of the "ST:TNG" skin (which is still there in its original layout, for those who don't like the LCARS skin, or can't use it due to OSD limitations). The LCARS skin utilizes the new "menu category" feature to display additional information on the main menu page. It shows upcoming timers and the system's devices, as well as which device is recording which timers. The upper pane of the main menu displays the programme data in live and replay mode, and a progress bar. An indicator on the right side of the device list shows which device is currently used for live viewing, and whether it is in transfer mode. The individual device displays show the device number, the device type, which CAM (if any ) is currently assigned to the device, and the signal strength and quality. On the left side of the OSD there is a permanent display of the current date and time, the disk usage and the system load. "LCARS" is the new default skin of VDR. It requires at least a 4bpp (16 color) full screen OSD, but you can still operate it if your OSD can handle only fewer colors (in which case you may want to switch to the "ST:TNG" or "Classic VDR" skin). - Finally removed the code marked with __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS and LEGACY_CRECEIVER. - Now making sure that the "small font" is never larger than the "osd font". - Fixed font handling with fontconfig 2.9.0 or newer (thanks to Joerg Bornkessel). - Extended the interface to the script that gets called for recordings, so that in the "edited" case it also provides the name of the original recording (thanks to Christian Richter). - Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger deleting of an event (thanks to Christian Kaiser). - Speeded up opening menus on systems with many (several thousands) of recordings, by caching the information whether a recording is stored on the video directory file system within the cRecording data (based on a patch from Torsten Lang).
This commit is contained in:
parent
19b952728e
commit
5500959f4f
38
CONTRIBUTORS
38
CONTRIBUTORS
@ -1140,6 +1140,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
|
|||||||
for suggesting to change the Green button in the "Edit timer" menu from "Once"
|
for suggesting to change the Green button in the "Edit timer" menu from "Once"
|
||||||
to "Single"
|
to "Single"
|
||||||
for fixing reduced bpp support for DVB subtitles
|
for fixing reduced bpp support for DVB subtitles
|
||||||
|
for implementing "DVB Standard compliance" handling
|
||||||
|
|
||||||
Ralf Klueber <ralf.klueber@vodafone.com>
|
Ralf Klueber <ralf.klueber@vodafone.com>
|
||||||
for reporting a bug in cutting a recording if there is only a single editing mark
|
for reporting a bug in cutting a recording if there is only a single editing mark
|
||||||
@ -1309,6 +1310,7 @@ Reinhard Nissl <rnissl@gmx.de>
|
|||||||
for making cEITScanner process new transponders before old ones, to make sure
|
for making cEITScanner process new transponders before old ones, to make sure
|
||||||
transponder changes are recognized
|
transponder changes are recognized
|
||||||
for helping to debug switching into time shift mode when pausing live video
|
for helping to debug switching into time shift mode when pausing live video
|
||||||
|
for fixing a possible high CPU load when pausing replay
|
||||||
|
|
||||||
Richard Robson <richard_robson@beeb.net>
|
Richard Robson <richard_robson@beeb.net>
|
||||||
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
||||||
@ -1782,6 +1784,7 @@ Joachim Wilke <vdr@joachim-wilke.de>
|
|||||||
for modifying cCharSetConv so that it can be used to convert from "whatever VDR uses"
|
for modifying cCharSetConv so that it can be used to convert from "whatever VDR uses"
|
||||||
to a given code
|
to a given code
|
||||||
for adding some missing 'const' to cDevice
|
for adding some missing 'const' to cDevice
|
||||||
|
for making sure setup strings don't contain any newline characters
|
||||||
|
|
||||||
Sascha Klek <sklek@gmx.de>
|
Sascha Klek <sklek@gmx.de>
|
||||||
for reporting a problem with the '0' key in the "Day" item of the "Timers" menu
|
for reporting a problem with the '0' key in the "Day" item of the "Timers" menu
|
||||||
@ -2591,6 +2594,9 @@ Sundararaj Reel <sundararaj.reel@googlemail.com>
|
|||||||
for reporting a memory leak in cRecordings::ScanVideoDir() in case there are too
|
for reporting a memory leak in cRecordings::ScanVideoDir() in case there are too
|
||||||
many link levels
|
many link levels
|
||||||
for reporting a bug in cListBase::Move() in case From and To are equal
|
for reporting a bug in cListBase::Move() in case From and To are equal
|
||||||
|
for reporting a problem with the function cString::sprintf(const char *fmt, va_list &ap),
|
||||||
|
that might inadvertently be called with a 'char *' as the second argument on some
|
||||||
|
compilers and cause a crash
|
||||||
|
|
||||||
Ales Jurik <ajurik@quick.cz>
|
Ales Jurik <ajurik@quick.cz>
|
||||||
for reporting broken SI data on Czech/Slovak channels after changing the default
|
for reporting broken SI data on Czech/Slovak channels after changing the default
|
||||||
@ -2663,6 +2669,8 @@ Derek Kelly (user.vdr@gmail.com)
|
|||||||
could not be determined after resuming recording
|
could not be determined after resuming recording
|
||||||
for reporting a problem with detecting frames for channels that split frames into
|
for reporting a problem with detecting frames for channels that split frames into
|
||||||
several payloads
|
several payloads
|
||||||
|
for reporting a problem with getting the maximum short channel name length in case there
|
||||||
|
are no short names at all
|
||||||
|
|
||||||
Marcel Unbehaun <frostworks@gmx.de>
|
Marcel Unbehaun <frostworks@gmx.de>
|
||||||
for adding cRecordingInfo::GetEvent()
|
for adding cRecordingInfo::GetEvent()
|
||||||
@ -2720,6 +2728,7 @@ Lars Hanisch <dvb@flensrocker.de>
|
|||||||
for suggesting to assign the source character 'V' to "Analog Video"
|
for suggesting to assign the source character 'V' to "Analog Video"
|
||||||
for a patch that was used to implement SCR (Satellite Channel Routing)
|
for a patch that was used to implement SCR (Satellite Channel Routing)
|
||||||
for implementing the SVDRP command 'UPDR'
|
for implementing the SVDRP command 'UPDR'
|
||||||
|
for reporting that the SVDRP command UPDR didn't update the global recordings list
|
||||||
|
|
||||||
Alex Lasnier <alex@fepg.org>
|
Alex Lasnier <alex@fepg.org>
|
||||||
for adding tuning support for ATSC devices
|
for adding tuning support for ATSC devices
|
||||||
@ -2771,6 +2780,7 @@ Dominik Strasser <dominik@die-strassers.de>
|
|||||||
|
|
||||||
Joerg Bornkessel <hd_brummy@gentoo.org>
|
Joerg Bornkessel <hd_brummy@gentoo.org>
|
||||||
for adding LDFLAGS to the linker calls in the Makefiles
|
for adding LDFLAGS to the linker calls in the Makefiles
|
||||||
|
for fixing font handling with fontconfig 2.9.0 or newer
|
||||||
|
|
||||||
Andreas Oberritter <obi@opendreambox.org>
|
Andreas Oberritter <obi@opendreambox.org>
|
||||||
for suggesting to retrieve the include path to the freetype2 header files
|
for suggesting to retrieve the include path to the freetype2 header files
|
||||||
@ -2790,6 +2800,8 @@ Gerald Dachs <vdr@dachsweb.de>
|
|||||||
|
|
||||||
Juergen Lock <vdr-l@jelal.kn-bremen.de>
|
Juergen Lock <vdr-l@jelal.kn-bremen.de>
|
||||||
for fixing cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE
|
for fixing cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE
|
||||||
|
for reporting a problem with EPG scan on systems with only a single DVB device that
|
||||||
|
use software output
|
||||||
|
|
||||||
Sergiu Dotenco <sergiu.dotenco@googlemail.com>
|
Sergiu Dotenco <sergiu.dotenco@googlemail.com>
|
||||||
for reporting a missing initialization in sDvbSpuRect
|
for reporting a missing initialization in sDvbSpuRect
|
||||||
@ -2849,6 +2861,9 @@ Torsten Lang <info@torstenlang.de>
|
|||||||
of EPG data from BSkyB's "MTV MUSIC"
|
of EPG data from BSkyB's "MTV MUSIC"
|
||||||
for suggesting to make BIDI support check at runtime whether the system runs with
|
for suggesting to make BIDI support check at runtime whether the system runs with
|
||||||
UTF-8
|
UTF-8
|
||||||
|
for reporting a bug in checking for UTF-8 support in cFont::Bidi()
|
||||||
|
for a patch that was used to implement caching the information whether a recording
|
||||||
|
is stored on the video directory file system within the cRecording data
|
||||||
|
|
||||||
Christian Ruppert <idl0r@gentoo.org>
|
Christian Ruppert <idl0r@gentoo.org>
|
||||||
for some improvements to the Makefiles
|
for some improvements to the Makefiles
|
||||||
@ -2862,3 +2877,26 @@ Ralf Schueler <dl4mw@schueler.ws>
|
|||||||
from version 1.7.8 to 1.6.0-3
|
from version 1.7.8 to 1.6.0-3
|
||||||
for backporting "Fixed cRecordings::DelByName() to avoid compilation errors with
|
for backporting "Fixed cRecordings::DelByName() to avoid compilation errors with
|
||||||
gcc 4.4" from version 1.7.9 to 1.6.0-3
|
gcc 4.4" from version 1.7.9 to 1.6.0-3
|
||||||
|
|
||||||
|
Marcus Roscher <dad401@gmx.de>
|
||||||
|
for reporting a problem with cDevice::StillPicture(), which called the derived class's
|
||||||
|
function even if no buffer has been allocated
|
||||||
|
|
||||||
|
Reinhard Mantey <geronimo013@gmx.de>
|
||||||
|
for reporting a problem with character comparisons in
|
||||||
|
cSubtitleObject::DecodeCharacterString()
|
||||||
|
for fixing a mismatched 'delete' in cSchedules::SetEpgDataFileName()
|
||||||
|
|
||||||
|
Michael Schneider <vdrportal_midas@gmx.de>
|
||||||
|
for reporting a problem with the EPG scan in case a transponder is not receivable in
|
||||||
|
a setup with bonded devices
|
||||||
|
|
||||||
|
Marco Skambraks <marco@ammec.de>
|
||||||
|
for fixing resetting CAMs
|
||||||
|
|
||||||
|
Christian Richter <cr@crichter.net>
|
||||||
|
for extending the interface to the script that gets called for recordings, so that in
|
||||||
|
the "edited" case it also provides the name of the original recording
|
||||||
|
|
||||||
|
Christian Kaiser <christian.kaiser@teleservice.com>
|
||||||
|
for adding DeleteEvent() to the EPG handler interface
|
||||||
|
98
HISTORY
98
HISTORY
@ -6603,7 +6603,7 @@ Video Disk Recorder Revision History
|
|||||||
- Now using pkg-config to get fribidi, freetype and fontconfig cflags and libs (thanks
|
- Now using pkg-config to get fribidi, freetype and fontconfig cflags and libs (thanks
|
||||||
to Ville Skyttä).
|
to Ville Skyttä).
|
||||||
- The Makefile now also installs the include files (thanks to Ville Skyttä).
|
- The Makefile now also installs the include files (thanks to Ville Skyttä).
|
||||||
- Added handling of "ANSI/SCTE 57" descriptors (thanks too Rolf Ahrenberg).
|
- Added handling of "ANSI/SCTE 57" descriptors (thanks to Rolf Ahrenberg).
|
||||||
- Avoiding an unecessary call to Recordings.ResetResume() (thanks to Reinhard
|
- Avoiding an unecessary call to Recordings.ResetResume() (thanks to Reinhard
|
||||||
Nissl).
|
Nissl).
|
||||||
|
|
||||||
@ -7051,3 +7051,99 @@ Video Disk Recorder Revision History
|
|||||||
- Reverted some improvements to Make.config.template (thanks to Christian Ruppert).
|
- Reverted some improvements to Make.config.template (thanks to Christian Ruppert).
|
||||||
- Fixed handling IDLEPRIORITY in cDvbDevice::ProvidesChannel() (thanks to Frank
|
- Fixed handling IDLEPRIORITY in cDvbDevice::ProvidesChannel() (thanks to Frank
|
||||||
Schmirler).
|
Schmirler).
|
||||||
|
|
||||||
|
2012-06-03: Version 1.7.28
|
||||||
|
|
||||||
|
- Fixed cPixmapMemory::DrawEllipse() for quadrants -1 and -4.
|
||||||
|
- Fixed getting the maximum short channel name length in case there are no short names
|
||||||
|
at all (reported by Derek Kelly).
|
||||||
|
- The new function cDevice::DeviceType() returns a string identifying the type of
|
||||||
|
the given device.
|
||||||
|
- Now limiting the number of characters of a channel's (short) name to 16 in the
|
||||||
|
schedules menus, to keep that column from getting overly wide in case there is
|
||||||
|
a channel with a very long name that has no short name.
|
||||||
|
- Fixed EPG scan on systems with only a single DVB device that use software output
|
||||||
|
(reported by Juergen Lock).
|
||||||
|
- Skins can now inquire the menu category for which their cSkinDisplayMenu is currently
|
||||||
|
being used. This can be done either through a call to cSkinDisplayMenu::MenuCategory()
|
||||||
|
or by reimplementing cSkinDisplayMenu::SetMenuCategory(). This information allows a
|
||||||
|
skin to use special icons or decorations for the various types of menus in VDR.
|
||||||
|
- The new setup option "DVB/Standard compliance" can be used to switch between different
|
||||||
|
variations of the DVB standard (thanks to Rolf Ahrenberg). Currently there is "DVB"
|
||||||
|
(for the original DVB standard) and "ANSI/SCTE", which is used to properly handle
|
||||||
|
certain private stream types.
|
||||||
|
- The disk usage is no longer automatically added to the title of the main and
|
||||||
|
"Recordings" menus. This has always been a mekeshift solution and it is now up
|
||||||
|
to the individual skin if, where and how it wants to display this information.
|
||||||
|
A skin can use the new cVideoDiskUsage class to implement such a display. For
|
||||||
|
compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode"
|
||||||
|
(i.e. curses) have been changed to behave like before. Other skins may want to
|
||||||
|
display the disk usage in totally different ways.
|
||||||
|
- A cOsdMenu can now handle skins that display different numbers of items in the
|
||||||
|
various menu categories.
|
||||||
|
- OSD and skin are now reinitialized after a plugin setup page has been confirmed,
|
||||||
|
to have them react immediately in case any change to a plugin's setup parameter
|
||||||
|
has an effect on the OSD.
|
||||||
|
- The Timers list is now marked as modified whenever a recording starts or ends.
|
||||||
|
- Fixed cDevice::StillPicture(), making sure it doesn't call the derived class's
|
||||||
|
function if no buffer has been allocated (reported by Marcus Roscher).
|
||||||
|
- Fixed the SVDRP command UPDR, which didn't update the global recordings list
|
||||||
|
(reported by Lars Hanisch).
|
||||||
|
- cControl::Control() now has an additional boolean parameter, which can be set to
|
||||||
|
true to get the current player control even if it is hidden.
|
||||||
|
- The new functions cControl::GetRecording() and cControl::GetHeader() can be used
|
||||||
|
to retrieve information about what the current player is playing.
|
||||||
|
- Fixed a possible high CPU load when pausing replay (thanks to Reinhard Nissl).
|
||||||
|
- Fixed character comparisons in cSubtitleObject::DecodeCharacterString() (reported
|
||||||
|
by Reinhard Mantey).
|
||||||
|
- Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(),
|
||||||
|
because it might inadvertently be called with a 'char *' as the second argument on
|
||||||
|
some compilers and cause a crash (reported by Sundararaj Reel).
|
||||||
|
- Removed the "bondedMasterFailed" mechanism from cDvbTuner, because it caused
|
||||||
|
problems with the EPG scan in case a transponder is not receivable in a setup with
|
||||||
|
bonded devices (reported by Michael Schneider).
|
||||||
|
- Making sure setup strings don't contain any newline characters (thanks to Joachim
|
||||||
|
Wilke).
|
||||||
|
- The new member function cSkinDisplayReplay::SetRecording() allows a skin to display
|
||||||
|
more information about the currently played recording.
|
||||||
|
- Fixed a mismatched 'delete' in cSchedules::SetEpgDataFileName() (thanks to Reinhard
|
||||||
|
Mantey).
|
||||||
|
- The DrawText() functions of the OSD now accept the new alignment flag taBorder,
|
||||||
|
which triggers keeping a proper distance from the edge that taLeft or taRight
|
||||||
|
aligns to.
|
||||||
|
- Fixed checking for UTF-8 support in cFont::Bidi() (reported by Torsten Lang).
|
||||||
|
- If a recording has no info file, the 'title' of the recording's info is now set
|
||||||
|
to the recording's name.
|
||||||
|
- cVector::Clear() now reinitializes any previously used members.
|
||||||
|
- Fixed resetting CAMs (thanks to Marco Skambraks).
|
||||||
|
- The new function RgbShade() (include osd.h) can be used to generate a brighter or
|
||||||
|
darker version of a given color.
|
||||||
|
- The new class cSortedTimers can be used to quickly get a list of all timers, sorted
|
||||||
|
by their start time.
|
||||||
|
- The new skin "LCARS" is an enhanced version of the "ST:TNG" skin (which is still
|
||||||
|
there in its original layout, for those who don't like the LCARS skin, or can't use
|
||||||
|
it due to OSD limitations). The LCARS skin utilizes the new "menu category" feature
|
||||||
|
to display additional information on the main menu page. It shows upcoming timers
|
||||||
|
and the system's devices, as well as which device is recording which timers. The
|
||||||
|
upper pane of the main menu displays the programme data in live and replay mode,
|
||||||
|
and a progress bar. An indicator on the right side of the device list shows which
|
||||||
|
device is currently used for live viewing, and whether it is in transfer mode.
|
||||||
|
The individual device displays show the device number, the device type, which CAM
|
||||||
|
(if any ) is currently assigned to the device, and the signal strength and quality.
|
||||||
|
On the left side of the OSD there is a permanent display of the current date and
|
||||||
|
time, the disk usage and the system load.
|
||||||
|
"LCARS" is the new default skin of VDR. It requires at least a 4bpp (16 color) full
|
||||||
|
screen OSD, but you can still operate it if your OSD can handle only fewer colors
|
||||||
|
(in which case you may want to switch to the "ST:TNG" or "Classic VDR" skin).
|
||||||
|
- Finally removed the code marked with __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
|
||||||
|
and LEGACY_CRECEIVER.
|
||||||
|
- Now making sure that the "small font" is never larger than the "osd font".
|
||||||
|
- Fixed font handling with fontconfig 2.9.0 or newer (thanks to Joerg Bornkessel).
|
||||||
|
- Extended the interface to the script that gets called for recordings, so that in
|
||||||
|
the "edited" case it also provides the name of the original recording (thanks to
|
||||||
|
Christian Richter).
|
||||||
|
- Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger
|
||||||
|
deleting of an event (thanks to Christian Kaiser).
|
||||||
|
- Speeded up opening menus on systems with many (several thousands) of recordings, by
|
||||||
|
caching the information whether a recording is stored on the video directory file
|
||||||
|
system within the cRecording data (based on a patch from Torsten Lang).
|
||||||
|
17
INSTALL
17
INSTALL
@ -88,6 +88,15 @@ vdr:123:respawn:/usr/local/bin/vdr --terminal=/dev/tty8 -w 60
|
|||||||
|
|
||||||
See the man page vdr(1) for complete information about all command line options.
|
See the man page vdr(1) for complete information about all command line options.
|
||||||
|
|
||||||
|
Standard compliance
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Basically VDR works according to the DVB standard, but there are countries/providers
|
||||||
|
that use other standards, which in some details deviate from the DVB standard.
|
||||||
|
This makes it necessary to handle things differently in some areas, depending on
|
||||||
|
which standard is actually used. If this is the case in your area, you may need
|
||||||
|
to adjust the option "DVB/Standard compliance" in the Setup menu accordingly.
|
||||||
|
|
||||||
Locale
|
Locale
|
||||||
------
|
------
|
||||||
|
|
||||||
@ -235,8 +244,8 @@ You can use the '-r' option to define a program or script that gets called
|
|||||||
before and after a recording is performed, and after an editing process
|
before and after a recording is performed, and after an editing process
|
||||||
has finished.
|
has finished.
|
||||||
|
|
||||||
The program will be called with two string parameters. The first parameter
|
The program will be called with two or three (in case of "edited") string
|
||||||
is one of
|
parameters. The first parameter is one of
|
||||||
|
|
||||||
before if this is *before* a recording starts
|
before if this is *before* a recording starts
|
||||||
after if this is *after* a recording has finished
|
after if this is *after* a recording has finished
|
||||||
@ -244,7 +253,8 @@ is one of
|
|||||||
|
|
||||||
and the second parameter contains the full name of the recording's
|
and the second parameter contains the full name of the recording's
|
||||||
directory (which may not yet exists at that moment in the "before" case).
|
directory (which may not yet exists at that moment in the "before" case).
|
||||||
In the "edited" case it will be the name of the edited version.
|
In the "edited" case it will be the name of the edited version (second
|
||||||
|
parameter) and the name of the source version (third parameter).
|
||||||
|
|
||||||
Within this program you can do anything you would like to do before and/or
|
Within this program you can do anything you would like to do before and/or
|
||||||
after a recording or after an editing process. However, the program must return
|
after a recording or after an editing process. However, the program must return
|
||||||
@ -265,6 +275,7 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
edited)
|
edited)
|
||||||
echo "Edited recording $2"
|
echo "Edited recording $2"
|
||||||
|
echo "Source recording $3"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: unknown state: $1"
|
echo "ERROR: unknown state: $1"
|
||||||
|
5
MANUAL
5
MANUAL
@ -674,6 +674,11 @@ Version 1.6
|
|||||||
from the primary DVB interface, so that the viewer will
|
from the primary DVB interface, so that the viewer will
|
||||||
be disturbed as little as possible.
|
be disturbed as little as possible.
|
||||||
|
|
||||||
|
Standard Compliance = 0
|
||||||
|
Defines the standard compliance mode:
|
||||||
|
0 = DVB
|
||||||
|
1 = ANSI/SCTE
|
||||||
|
|
||||||
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
|
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
|
||||||
(4:3 or 16:9).
|
(4:3 or 16:9).
|
||||||
|
|
||||||
|
4
Makefile
4
Makefile
@ -4,7 +4,7 @@
|
|||||||
# See the main source file 'vdr.c' for copyright information and
|
# See the main source file 'vdr.c' for copyright information and
|
||||||
# how to reach the author.
|
# how to reach the author.
|
||||||
#
|
#
|
||||||
# $Id: Makefile 2.26 2012/03/11 15:33:57 kls Exp $
|
# $Id: Makefile 2.27 2012/04/15 13:21:31 kls Exp $
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o d
|
|||||||
dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o font.o i18n.o interface.o keys.o\
|
dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o font.o i18n.o interface.o keys.o\
|
||||||
lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o\
|
lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o\
|
||||||
receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o shutdown.o\
|
receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o shutdown.o\
|
||||||
skinclassic.o skins.o skinsttng.o sourceparams.o sources.o spu.o status.o svdrp.o themes.o thread.o\
|
skinclassic.o skinlcars.o skins.o skinsttng.o sourceparams.o sources.o spu.o status.o svdrp.o themes.o thread.o\
|
||||||
timers.o tools.o transfer.o vdr.o videodir.o
|
timers.o tools.o transfer.o vdr.o videodir.o
|
||||||
|
|
||||||
ifndef NO_KBD
|
ifndef NO_KBD
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbhdffdevice.c 1.41 2012/03/07 13:52:41 kls Exp $
|
* $Id: dvbhdffdevice.c 1.43 2012/05/08 11:40:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
@ -50,7 +50,7 @@ cDvbHdFfDevice::cDvbHdFfDevice(int Adapter, int Frontend)
|
|||||||
mHdffCmdIf = new HDFF::cHdffCmdIf(fd_osd);
|
mHdffCmdIf = new HDFF::cHdffCmdIf(fd_osd);
|
||||||
|
|
||||||
/* reset some stuff in case the VDR was killed before and had no chance
|
/* reset some stuff in case the VDR was killed before and had no chance
|
||||||
to clean up. */
|
to clean up. */
|
||||||
mHdffCmdIf->CmdOsdReset();
|
mHdffCmdIf->CmdOsdReset();
|
||||||
|
|
||||||
mHdffCmdIf->CmdAvSetVideoSpeed(0, 100);
|
mHdffCmdIf->CmdAvSetVideoSpeed(0, 100);
|
||||||
@ -183,68 +183,72 @@ void cDvbHdFfDevice::GetOsdSize(int &Width, int &Height, double &PixelAspect)
|
|||||||
gHdffSetup.GetOsdSize(Width, Height, PixelAspect);
|
gHdffSetup.GetOsdSize(Width, Height, PixelAspect);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*TODO obsolete?
|
|
||||||
bool cDvbHdFfDevice::SetAudioBypass(bool On)
|
|
||||||
{
|
|
||||||
if (setTransferModeForDolbyDigital != 1)
|
|
||||||
return false;
|
|
||||||
return ioctl(fd_audio, AUDIO_SET_BYPASS_MODE, On) == 0;
|
|
||||||
}
|
|
||||||
TODO*/
|
|
||||||
|
|
||||||
bool cDvbHdFfDevice::SetPid(cPidHandle *Handle, int Type, bool On)
|
bool cDvbHdFfDevice::SetPid(cPidHandle *Handle, int Type, bool On)
|
||||||
{
|
{
|
||||||
if (Handle->pid) {
|
//printf("SetPid Type %d, On %d, PID %5d, streamtype %d, handle %d, used %d\n", Type, On, Handle->pid, Handle->streamType, Handle->handle, Handle->used);
|
||||||
dmx_pes_filter_params pesFilterParams;
|
if (Handle->pid) {
|
||||||
memset(&pesFilterParams, 0, sizeof(pesFilterParams));
|
dmx_pes_filter_params pesFilterParams;
|
||||||
if (On) {
|
memset(&pesFilterParams, 0, sizeof(pesFilterParams));
|
||||||
if (Handle->handle < 0) {
|
if (On) {
|
||||||
Handle->handle = DvbOpen(DEV_DVB_DEMUX, adapter, frontend, O_RDWR | O_NONBLOCK, true);
|
if (Handle->handle < 0) {
|
||||||
if (Handle->handle < 0) {
|
Handle->handle = DvbOpen(DEV_DVB_DEMUX, adapter, frontend, O_RDWR | O_NONBLOCK, true);
|
||||||
LOG_ERROR;
|
if (Handle->handle < 0) {
|
||||||
return false;
|
LOG_ERROR;
|
||||||
}
|
return false;
|
||||||
}
|
}
|
||||||
if (Type == ptPcr)
|
}
|
||||||
mHdffCmdIf->CmdAvSetPcrPid(0, Handle->pid);
|
if (Type == ptPcr)
|
||||||
else if (Type == ptVideo) {
|
mHdffCmdIf->CmdAvSetPcrPid(0, Handle->pid);
|
||||||
if (Handle->streamType == 0x1B)
|
else if (Type == ptVideo) {
|
||||||
mHdffCmdIf->CmdAvSetVideoPid(0, Handle->pid, HDFF_VIDEO_STREAM_H264);
|
if (Handle->streamType == 0x1B)
|
||||||
else
|
mHdffCmdIf->CmdAvSetVideoPid(0, Handle->pid, HDFF_VIDEO_STREAM_H264);
|
||||||
mHdffCmdIf->CmdAvSetVideoPid(0, Handle->pid, HDFF_VIDEO_STREAM_MPEG2);
|
else
|
||||||
}
|
mHdffCmdIf->CmdAvSetVideoPid(0, Handle->pid, HDFF_VIDEO_STREAM_MPEG2);
|
||||||
else if (Type == ptAudio)
|
}
|
||||||
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_MPEG1);
|
else if (Type == ptAudio) {
|
||||||
else if (Type == ptDolby)
|
if (Handle->streamType == 0x03)
|
||||||
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_AC3);
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_MPEG1);
|
||||||
if (!(Type <= ptDolby && Handle->used <= 1)) {
|
else if (Handle->streamType == 0x04)
|
||||||
pesFilterParams.pid = Handle->pid;
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_MPEG2);
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
else if (Handle->streamType == SI::AC3DescriptorTag)
|
||||||
pesFilterParams.output = DMX_OUT_TS_TAP;
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_AC3);
|
||||||
pesFilterParams.pes_type= DMX_PES_OTHER;
|
else if (Handle->streamType == SI::EnhancedAC3DescriptorTag)
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_EAC3);
|
||||||
if (ioctl(Handle->handle, DMX_SET_PES_FILTER, &pesFilterParams) < 0) {
|
else if (Handle->streamType == 0x0F)
|
||||||
LOG_ERROR;
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_AAC);
|
||||||
return false;
|
else if (Handle->streamType == 0x11)
|
||||||
}
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_HE_AAC);
|
||||||
}
|
else
|
||||||
|
mHdffCmdIf->CmdAvSetAudioPid(0, Handle->pid, HDFF_AUDIO_STREAM_MPEG1);
|
||||||
|
}
|
||||||
|
if (!(Type <= ptDolby && Handle->used <= 1)) {
|
||||||
|
pesFilterParams.pid = Handle->pid;
|
||||||
|
pesFilterParams.input = DMX_IN_FRONTEND;
|
||||||
|
pesFilterParams.output = DMX_OUT_TS_TAP;
|
||||||
|
pesFilterParams.pes_type= DMX_PES_OTHER;
|
||||||
|
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
||||||
|
if (ioctl(Handle->handle, DMX_SET_PES_FILTER, &pesFilterParams) < 0) {
|
||||||
|
LOG_ERROR;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!Handle->used) {
|
else if (!Handle->used) {
|
||||||
CHECK(ioctl(Handle->handle, DMX_STOP));
|
CHECK(ioctl(Handle->handle, DMX_STOP));
|
||||||
if (Type == ptPcr)
|
if (Type == ptPcr)
|
||||||
mHdffCmdIf->CmdAvSetPcrPid(0, 0);
|
mHdffCmdIf->CmdAvSetPcrPid(0, 0);
|
||||||
else if (Type == ptVideo)
|
else if (Type == ptVideo)
|
||||||
mHdffCmdIf->CmdAvSetVideoPid(0, 0, HDFF_VIDEO_STREAM_MPEG1);
|
mHdffCmdIf->CmdAvSetVideoPid(0, 0, HDFF_VIDEO_STREAM_MPEG1);
|
||||||
else if (Type == ptAudio)
|
else if (Type == ptAudio)
|
||||||
mHdffCmdIf->CmdAvSetAudioPid(0, 0, HDFF_AUDIO_STREAM_MPEG1);
|
mHdffCmdIf->CmdAvSetAudioPid(0, 0, HDFF_AUDIO_STREAM_MPEG1);
|
||||||
else if (Type == ptDolby)
|
else if (Type == ptDolby)
|
||||||
mHdffCmdIf->CmdAvSetAudioPid(0, 0, HDFF_AUDIO_STREAM_AC3);
|
mHdffCmdIf->CmdAvSetAudioPid(0, 0, HDFF_AUDIO_STREAM_AC3);
|
||||||
//TODO missing setting to 0x1FFF??? see cDvbDevice::SetPid()
|
//TODO missing setting to 0x1FFF??? see cDvbDevice::SetPid()
|
||||||
close(Handle->handle);
|
close(Handle->handle);
|
||||||
Handle->handle = -1;
|
Handle->handle = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDvbHdFfDevice::TurnOffLiveMode(bool LiveView)
|
void cDvbHdFfDevice::TurnOffLiveMode(bool LiveView)
|
||||||
@ -286,6 +290,8 @@ bool cDvbHdFfDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
|||||||
if (CamSlot() && !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), CamSlot()->SlotNumber()))
|
if (CamSlot() && !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), CamSlot()->SlotNumber()))
|
||||||
StartTransferMode |= LiveView && IsPrimaryDevice() && Channel->Ca() >= CA_ENCRYPTED_MIN;
|
StartTransferMode |= LiveView && IsPrimaryDevice() && Channel->Ca() >= CA_ENCRYPTED_MIN;
|
||||||
|
|
||||||
|
//printf("SetChannelDevice Transfer %d, Live %d\n", StartTransferMode, LiveView);
|
||||||
|
|
||||||
bool TurnOnLivePIDs = !StartTransferMode && LiveView;
|
bool TurnOnLivePIDs = !StartTransferMode && LiveView;
|
||||||
|
|
||||||
// Turn off live PIDs if necessary:
|
// Turn off live PIDs if necessary:
|
||||||
@ -301,13 +307,10 @@ bool cDvbHdFfDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
|||||||
// PID settings:
|
// PID settings:
|
||||||
|
|
||||||
if (TurnOnLivePIDs) {
|
if (TurnOnLivePIDs) {
|
||||||
//SetAudioBypass(false);//TODO obsolete?
|
if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(vpid, ptVideo, Channel->Vtype()) && AddPid(apid ? apid : dpid, ptAudio, apid ? 0 : Channel->Dtype(0)))) {
|
||||||
if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(vpid, ptVideo, Channel->Vtype()) && AddPid(apid, ptAudio))) {
|
|
||||||
esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1);
|
esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (IsPrimaryDevice())
|
|
||||||
AddPid(Channel->Tpid(), ptTeletext);//TODO obsolete?
|
|
||||||
}
|
}
|
||||||
else if (StartTransferMode)
|
else if (StartTransferMode)
|
||||||
cControl::Launch(new cTransferControl(this, Channel));
|
cControl::Launch(new cTransferControl(this, Channel));
|
||||||
@ -338,27 +341,31 @@ void cDvbHdFfDevice::SetDigitalAudioDevice(bool On)
|
|||||||
|
|
||||||
void cDvbHdFfDevice::SetAudioTrackDevice(eTrackType Type)
|
void cDvbHdFfDevice::SetAudioTrackDevice(eTrackType Type)
|
||||||
{
|
{
|
||||||
//printf("SetAudioTrackDevice %d\n", Type);
|
//printf("SetAudioTrackDevice %d\n", Type);
|
||||||
const tTrackId *TrackId = GetTrack(Type);
|
const tTrackId *TrackId = GetTrack(Type);
|
||||||
if (TrackId && TrackId->id) {
|
if (TrackId && TrackId->id) {
|
||||||
if (IS_AUDIO_TRACK(Type)) {
|
int streamType = 0;
|
||||||
if (pidHandles[ptAudio].pid && pidHandles[ptAudio].pid != TrackId->id) {
|
cChannel * channel = Channels.GetByNumber(CurrentChannel());
|
||||||
DetachAll(pidHandles[ptAudio].pid);
|
if (channel) {
|
||||||
if (CamSlot())
|
if (IS_AUDIO_TRACK(Type))
|
||||||
CamSlot()->SetPid(pidHandles[ptAudio].pid, false);
|
streamType = channel->Atype(Type - ttAudioFirst);
|
||||||
pidHandles[ptAudio].pid = TrackId->id;
|
else if (IS_DOLBY_TRACK(Type))
|
||||||
SetPid(&pidHandles[ptAudio], ptAudio, true);
|
streamType = channel->Dtype(Type - ttDolbyFirst);
|
||||||
if (CamSlot()) {
|
|
||||||
CamSlot()->SetPid(pidHandles[ptAudio].pid, true);
|
|
||||||
CamSlot()->StartDecrypting();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (IS_DOLBY_TRACK(Type)) {
|
|
||||||
pidHandles[ptDolby].pid = TrackId->id;
|
|
||||||
SetPid(&pidHandles[ptDolby], ptDolby, true);
|
|
||||||
}
|
}
|
||||||
}
|
//printf("SetAudioTrackDevice new %d %d, current %d\n", TrackId->id, streamType, pidHandles[ptAudio].pid);
|
||||||
|
if (pidHandles[ptAudio].pid && pidHandles[ptAudio].pid != TrackId->id) {
|
||||||
|
DetachAll(pidHandles[ptAudio].pid);
|
||||||
|
if (CamSlot())
|
||||||
|
CamSlot()->SetPid(pidHandles[ptAudio].pid, false);
|
||||||
|
pidHandles[ptAudio].pid = TrackId->id;
|
||||||
|
pidHandles[ptAudio].streamType = streamType;
|
||||||
|
SetPid(&pidHandles[ptAudio], ptAudio, true);
|
||||||
|
if (CamSlot()) {
|
||||||
|
CamSlot()->SetPid(pidHandles[ptAudio].pid, true);
|
||||||
|
CamSlot()->StartDecrypting();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbHdFfDevice::CanReplay(void) const
|
bool cDvbHdFfDevice::CanReplay(void) const
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: hdffosd.c 1.12 2011/12/04 15:31:41 kls Exp $
|
* $Id: hdffosd.c 1.15 2012/05/17 13:29:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "hdffosd.h"
|
#include "hdffosd.h"
|
||||||
@ -40,7 +40,6 @@ private:
|
|||||||
int mDispHeight;
|
int mDispHeight;
|
||||||
bool shown;
|
bool shown;
|
||||||
bool mChanged;
|
bool mChanged;
|
||||||
bool mBitmapModified;
|
|
||||||
uint32_t mDisplay;
|
uint32_t mDisplay;
|
||||||
tFontFace mFontFaces[MAX_NUM_FONTFACES];
|
tFontFace mFontFaces[MAX_NUM_FONTFACES];
|
||||||
tFont mFonts[MAX_NUM_FONTS];
|
tFont mFonts[MAX_NUM_FONTS];
|
||||||
@ -53,7 +52,6 @@ protected:
|
|||||||
public:
|
public:
|
||||||
cHdffOsd(int Left, int Top, HDFF::cHdffCmdIf * pHdffCmdIf, uint Level);
|
cHdffOsd(int Left, int Top, HDFF::cHdffCmdIf * pHdffCmdIf, uint Level);
|
||||||
virtual ~cHdffOsd();
|
virtual ~cHdffOsd();
|
||||||
cBitmap *GetBitmap(int Area);
|
|
||||||
virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas);
|
virtual eOsdError CanHandleAreas(const tArea *Areas, int NumAreas);
|
||||||
virtual eOsdError SetAreas(const tArea *Areas, int NumAreas);
|
virtual eOsdError SetAreas(const tArea *Areas, int NumAreas);
|
||||||
virtual void SaveRegion(int x1, int y1, int x2, int y2);
|
virtual void SaveRegion(int x1, int y1, int x2, int y2);
|
||||||
@ -79,9 +77,8 @@ cHdffOsd::cHdffOsd(int Left, int Top, HDFF::cHdffCmdIf * pHdffCmdIf, uint Level)
|
|||||||
mTop = Top;
|
mTop = Top;
|
||||||
shown = false;
|
shown = false;
|
||||||
mChanged = false;
|
mChanged = false;
|
||||||
mBitmapModified = false;
|
|
||||||
mBitmapPalette = HDFF_INVALID_HANDLE;
|
mBitmapPalette = HDFF_INVALID_HANDLE;
|
||||||
config.FontKerning = false;
|
config.FontKerning = true;
|
||||||
config.FontAntialiasing = Setup.AntiAlias ? true : false;
|
config.FontAntialiasing = Setup.AntiAlias ? true : false;
|
||||||
mHdffCmdIf->CmdOsdConfigure(&config);
|
mHdffCmdIf->CmdOsdConfigure(&config);
|
||||||
|
|
||||||
@ -126,14 +123,6 @@ cHdffOsd::~cHdffOsd()
|
|||||||
mHdffCmdIf->CmdOsdDeleteDisplay(mDisplay);
|
mHdffCmdIf->CmdOsdDeleteDisplay(mDisplay);
|
||||||
}
|
}
|
||||||
|
|
||||||
cBitmap * cHdffOsd::GetBitmap(int Area)
|
|
||||||
{
|
|
||||||
//printf("GetBitmap %d\n", Area);
|
|
||||||
mChanged = true;
|
|
||||||
mBitmapModified = true;
|
|
||||||
return cOsd::GetBitmap(Area);
|
|
||||||
}
|
|
||||||
|
|
||||||
eOsdError cHdffOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
|
eOsdError cHdffOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
|
||||||
{
|
{
|
||||||
eOsdError Result = cOsd::CanHandleAreas(Areas, NumAreas);
|
eOsdError Result = cOsd::CanHandleAreas(Areas, NumAreas);
|
||||||
@ -150,6 +139,9 @@ eOsdError cHdffOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
|
|||||||
|
|
||||||
eOsdError cHdffOsd::SetAreas(const tArea *Areas, int NumAreas)
|
eOsdError cHdffOsd::SetAreas(const tArea *Areas, int NumAreas)
|
||||||
{
|
{
|
||||||
|
eOsdError error;
|
||||||
|
cBitmap * bitmap;
|
||||||
|
|
||||||
for (int i = 0; i < NumAreas; i++)
|
for (int i = 0; i < NumAreas; i++)
|
||||||
{
|
{
|
||||||
//printf("SetAreas %d: %d %d %d %d %d\n", i, Areas[i].x1, Areas[i].y1, Areas[i].x2, Areas[i].y2, Areas[i].bpp);
|
//printf("SetAreas %d: %d %d %d %d %d\n", i, Areas[i].x1, Areas[i].y1, Areas[i].x2, Areas[i].y2, Areas[i].bpp);
|
||||||
@ -160,7 +152,14 @@ eOsdError cHdffOsd::SetAreas(const tArea *Areas, int NumAreas)
|
|||||||
mHdffCmdIf->CmdOsdRenderDisplay(mDisplay);
|
mHdffCmdIf->CmdOsdRenderDisplay(mDisplay);
|
||||||
shown = false;
|
shown = false;
|
||||||
}
|
}
|
||||||
return cOsd::SetAreas(Areas, NumAreas);
|
error = cOsd::SetAreas(Areas, NumAreas);
|
||||||
|
|
||||||
|
for (int i = 0; (bitmap = GetBitmap(i)) != NULL; i++)
|
||||||
|
{
|
||||||
|
bitmap->Clean();
|
||||||
|
}
|
||||||
|
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::SetActive(bool On)
|
void cHdffOsd::SetActive(bool On)
|
||||||
@ -186,25 +185,22 @@ void cHdffOsd::SaveRegion(int x1, int y1, int x2, int y2)
|
|||||||
{
|
{
|
||||||
mHdffCmdIf->CmdOsdSaveRegion(mDisplay, mLeft + x1, mTop + y1, x2 - x1 + 1, y2 - y1 + 1);
|
mHdffCmdIf->CmdOsdSaveRegion(mDisplay, mLeft + x1, mTop + y1, x2 - x1 + 1, y2 - y1 + 1);
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::RestoreRegion(void)
|
void cHdffOsd::RestoreRegion(void)
|
||||||
{
|
{
|
||||||
mHdffCmdIf->CmdOsdRestoreRegion(mDisplay);
|
mHdffCmdIf->CmdOsdRestoreRegion(mDisplay);
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::DrawPixel(int x, int y, tColor Color)
|
void cHdffOsd::DrawPixel(int x, int y, tColor Color)
|
||||||
{
|
{
|
||||||
//printf("DrawPixel\n");
|
//printf("DrawPixel\n");
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg, bool ReplacePalette, bool Overlay)
|
void cHdffOsd::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg, bool ReplacePalette, bool Overlay)
|
||||||
{
|
{
|
||||||
//printf("DrawBitmap %d %d %d\n", x, y, Overlay);
|
//printf("DrawBitmap %d %d %d x %d\n", x, y, Bitmap.Width(), Bitmap.Height());
|
||||||
int i;
|
int i;
|
||||||
int numColors;
|
int numColors;
|
||||||
const tColor * colors = Bitmap.Colors(numColors);
|
const tColor * colors = Bitmap.Colors(numColors);
|
||||||
@ -230,37 +226,21 @@ void cHdffOsd::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, t
|
|||||||
mHdffCmdIf->CmdOsdSetPaletteColors(mBitmapPalette,
|
mHdffCmdIf->CmdOsdSetPaletteColors(mBitmapPalette,
|
||||||
HDFF_COLOR_FORMAT_ARGB, 0, numColors, mBitmapColors);
|
HDFF_COLOR_FORMAT_ARGB, 0, numColors, mBitmapColors);
|
||||||
}
|
}
|
||||||
mHdffCmdIf->CmdOsdDrawBitmap(mDisplay, mLeft + x, mTop + y,
|
int width = Bitmap.Width();
|
||||||
(uint8_t *) Bitmap.Data(0, 0), Bitmap.Width(), Bitmap.Height(),
|
int height = Bitmap.Height();
|
||||||
Bitmap.Width() * Bitmap.Height(), HDFF_COLOR_TYPE_CLUT8, mBitmapPalette);
|
int chunk = MAX_BITMAP_SIZE / width;
|
||||||
#if 0
|
if (chunk > height)
|
||||||
uint32_t * tmpBitmap = new uint32_t[Bitmap.Width() * Bitmap.Height()];
|
chunk = height;
|
||||||
for (int ix = 0; ix < Bitmap.Width(); ix++)
|
for (int yc = 0; yc < height; yc += chunk)
|
||||||
{
|
{
|
||||||
for (int iy = 0; iy < Bitmap.Height(); iy++)
|
int hc = chunk;
|
||||||
{
|
if (yc + hc > height)
|
||||||
const tIndex * pixel = Bitmap.Data(ix, iy);
|
hc = height - yc;
|
||||||
tColor color = Bitmap.Color(*pixel);
|
mHdffCmdIf->CmdOsdDrawBitmap(mDisplay, mLeft + x, mTop + y + yc,
|
||||||
if (!Overlay || *pixel != 0)
|
(uint8_t *) Bitmap.Data(0, yc), width, hc,
|
||||||
{
|
width * hc, HDFF_COLOR_TYPE_CLUT8, mBitmapPalette);
|
||||||
if (ColorFg || ColorBg)
|
|
||||||
{
|
|
||||||
if (*pixel == 0)
|
|
||||||
color = ColorBg;
|
|
||||||
else if (*pixel == 1)
|
|
||||||
color = ColorFg;
|
|
||||||
}
|
|
||||||
tmpBitmap[Bitmap.Width() * iy + ix] = color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mHdffCmdIf->CmdOsdDrawBitmap(mDisplay, mLeft + x, mTop + y,
|
|
||||||
(uint8_t *) tmpBitmap, Bitmap.Width(), Bitmap.Height(),
|
|
||||||
Bitmap.Width() * Bitmap.Height() * 4, HDFF::colorTypeARGB8888, InvalidHandle);
|
|
||||||
delete[] tmpBitmap;
|
|
||||||
#endif
|
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment)
|
void cHdffOsd::DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment)
|
||||||
@ -365,11 +345,16 @@ void cHdffOsd::DrawText(int x, int y, const char *s, tColor ColorFg, tColor Colo
|
|||||||
if (Width)
|
if (Width)
|
||||||
{
|
{
|
||||||
if ((Alignment & taLeft) != 0)
|
if ((Alignment & taLeft) != 0)
|
||||||
;
|
{
|
||||||
|
if ((Alignment & taBorder) != 0)
|
||||||
|
x += max(h / TEXT_ALIGN_BORDER, 1);
|
||||||
|
}
|
||||||
else if ((Alignment & taRight) != 0)
|
else if ((Alignment & taRight) != 0)
|
||||||
{
|
{
|
||||||
if (w < Width)
|
if (w < Width)
|
||||||
x += Width - w;
|
x += Width - w;
|
||||||
|
if ((Alignment & taBorder) != 0)
|
||||||
|
x -= max(h / TEXT_ALIGN_BORDER, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // taCentered
|
{ // taCentered
|
||||||
@ -413,14 +398,12 @@ void cHdffOsd::DrawText(int x, int y, const char *s, tColor ColorFg, tColor Colo
|
|||||||
mHdffCmdIf->CmdOsdSetDisplayClippingArea(mDisplay, false, 0, 0, 0, 0);
|
mHdffCmdIf->CmdOsdSetDisplayClippingArea(mDisplay, false, 0, 0, 0, 0);
|
||||||
//Font->DrawText(this, x, y, s, ColorFg, ColorBg, limit);
|
//Font->DrawText(this, x, y, s, ColorFg, ColorBg, limit);
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::DrawRectangle(int x1, int y1, int x2, int y2, tColor Color)
|
void cHdffOsd::DrawRectangle(int x1, int y1, int x2, int y2, tColor Color)
|
||||||
{
|
{
|
||||||
mHdffCmdIf->CmdOsdDrawRectangle(mDisplay, mLeft + x1, mTop + y1, x2 - x1 + 1, y2 - y1 + 1, Color);
|
mHdffCmdIf->CmdOsdDrawRectangle(mDisplay, mLeft + x1, mTop + y1, x2 - x1 + 1, y2 - y1 + 1, Color);
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::DrawEllipse(int x1, int y1, int x2, int y2, tColor Color, int Quadrants)
|
void cHdffOsd::DrawEllipse(int x1, int y1, int x2, int y2, tColor Color, int Quadrants)
|
||||||
@ -511,14 +494,12 @@ void cHdffOsd::DrawEllipse(int x1, int y1, int x2, int y2, tColor Color, int Qua
|
|||||||
}
|
}
|
||||||
mHdffCmdIf->CmdOsdDrawEllipse(mDisplay, mLeft + cx, mTop + cy, rx, ry, Color, flags);
|
mHdffCmdIf->CmdOsdDrawEllipse(mDisplay, mLeft + cx, mTop + cy, rx, ry, Color, flags);
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::DrawSlope(int x1, int y1, int x2, int y2, tColor Color, int Type)
|
void cHdffOsd::DrawSlope(int x1, int y1, int x2, int y2, tColor Color, int Type)
|
||||||
{
|
{
|
||||||
//printf("DrawSlope\n");
|
//printf("DrawSlope\n");
|
||||||
mChanged = true;
|
mChanged = true;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cHdffOsd::Flush(void)
|
void cHdffOsd::Flush(void)
|
||||||
@ -526,23 +507,30 @@ void cHdffOsd::Flush(void)
|
|||||||
if (!Active())
|
if (!Active())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!mChanged)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//printf("Flush\n");
|
//printf("Flush\n");
|
||||||
if (mBitmapModified)
|
cBitmap * Bitmap;
|
||||||
|
|
||||||
|
for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++)
|
||||||
{
|
{
|
||||||
cBitmap *Bitmap;
|
int x1;
|
||||||
for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++)
|
int y1;
|
||||||
|
int x2;
|
||||||
|
int y2;
|
||||||
|
|
||||||
|
if (Bitmap->Dirty(x1, y1, x2, y2))
|
||||||
{
|
{
|
||||||
|
//printf("dirty %d %d, %d %d\n", x1, y1, x2, y2);
|
||||||
DrawBitmap(0, 0, *Bitmap);
|
DrawBitmap(0, 0, *Bitmap);
|
||||||
|
Bitmap->Clean();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mChanged)
|
||||||
|
return;
|
||||||
|
|
||||||
mHdffCmdIf->CmdOsdRenderDisplay(mDisplay);
|
mHdffCmdIf->CmdOsdRenderDisplay(mDisplay);
|
||||||
|
|
||||||
mChanged = false;
|
mChanged = false;
|
||||||
mBitmapModified = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,3 +71,7 @@ VDR Plugin 'pictures' Revision History
|
|||||||
2012-02-27: Version 0.1.2
|
2012-02-27: Version 0.1.2
|
||||||
|
|
||||||
- Removed an obsolete command line option.
|
- Removed an obsolete command line option.
|
||||||
|
|
||||||
|
2012-04-2r8 Version 0.1.3
|
||||||
|
|
||||||
|
- Added cPictureControl::GetHeader().
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: pictures.c 2.5 2012/02/27 11:40:15 kls Exp $
|
* $Id: pictures.c 2.6 2012/04/28 11:58:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
|
||||||
static const char *VERSION = "0.1.2";
|
static const char *VERSION = "0.1.3";
|
||||||
static const char *DESCRIPTION = trNOOP("A simple picture viewer");
|
static const char *DESCRIPTION = trNOOP("A simple picture viewer");
|
||||||
static const char *MAINMENUENTRY = trNOOP("Pictures");
|
static const char *MAINMENUENTRY = trNOOP("Pictures");
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: player.c 2.1 2011/02/20 17:15:25 kls Exp $
|
* $Id: player.c 2.2 2012/04/28 11:58:15 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
@ -204,6 +204,11 @@ void cPictureControl::DisplayCaption(void)
|
|||||||
osd->Flush();
|
osd->Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cString cPictureControl::GetHeader(void)
|
||||||
|
{
|
||||||
|
return tr("Pictures");
|
||||||
|
}
|
||||||
|
|
||||||
eOSState cPictureControl::ProcessKey(eKeys Key)
|
eOSState cPictureControl::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: player.h 2.0 2008/01/12 16:21:57 kls Exp $
|
* $Id: player.h 2.1 2012/04/28 11:56:01 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _PLAYER_H
|
#ifndef _PLAYER_H
|
||||||
@ -39,6 +39,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
cPictureControl(cPictureEntry *Pictures, const cPictureEntry *PictureEntry, bool SlideShow = false);
|
cPictureControl(cPictureEntry *Pictures, const cPictureEntry *PictureEntry, bool SlideShow = false);
|
||||||
virtual ~cPictureControl();
|
virtual ~cPictureControl();
|
||||||
|
virtual cString GetHeader(void);
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
static bool Active(void) { return active > 0; }
|
static bool Active(void) { return active > 0; }
|
||||||
static const char *LastDisplayed(void);
|
static const char *LastDisplayed(void);
|
||||||
|
@ -96,3 +96,8 @@ VDR Plugin 'skincurses' Revision History
|
|||||||
2012-03-11: Version 0.1.11
|
2012-03-11: Version 0.1.11
|
||||||
|
|
||||||
- Adapted menu column widths of 'skincurses' to the wider HD OSD sizes.
|
- Adapted menu column widths of 'skincurses' to the wider HD OSD sizes.
|
||||||
|
|
||||||
|
2012-04-23: Version 0.1.12
|
||||||
|
|
||||||
|
- Now displaying disk usage in the title of the main and "Recordings" menu,
|
||||||
|
which is no longer done by the VDR core.
|
||||||
|
@ -3,15 +3,16 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skincurses.c 2.8 2012/03/11 14:42:52 kls Exp $
|
* $Id: skincurses.c 2.9 2012/04/23 08:53:13 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ncurses.h>
|
#include <ncurses.h>
|
||||||
#include <vdr/osd.h>
|
#include <vdr/osd.h>
|
||||||
#include <vdr/plugin.h>
|
#include <vdr/plugin.h>
|
||||||
#include <vdr/skins.h>
|
#include <vdr/skins.h>
|
||||||
|
#include <vdr/videodir.h>
|
||||||
|
|
||||||
static const char *VERSION = "0.1.11";
|
static const char *VERSION = "0.1.12";
|
||||||
static const char *DESCRIPTION = trNOOP("A text only skin");
|
static const char *DESCRIPTION = trNOOP("A text only skin");
|
||||||
static const char *MAINMENUENTRY = NULL;
|
static const char *MAINMENUENTRY = NULL;
|
||||||
|
|
||||||
@ -262,6 +263,9 @@ void cSkinCursesDisplayChannel::Flush(void)
|
|||||||
class cSkinCursesDisplayMenu : public cSkinDisplayMenu {
|
class cSkinCursesDisplayMenu : public cSkinDisplayMenu {
|
||||||
private:
|
private:
|
||||||
cOsd *osd;
|
cOsd *osd;
|
||||||
|
cString title;
|
||||||
|
int lastDiskUsageState;
|
||||||
|
void DrawTitle(void);
|
||||||
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
|
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
|
||||||
void SetTextScrollbar(void);
|
void SetTextScrollbar(void);
|
||||||
public:
|
public:
|
||||||
@ -285,6 +289,7 @@ public:
|
|||||||
cSkinCursesDisplayMenu::cSkinCursesDisplayMenu(void)
|
cSkinCursesDisplayMenu::cSkinCursesDisplayMenu(void)
|
||||||
{
|
{
|
||||||
osd = new cCursesOsd(0, 0);
|
osd = new cCursesOsd(0, 0);
|
||||||
|
lastDiskUsageState = -1;
|
||||||
osd->DrawRectangle(0, 0, ScOsdWidth - 1, ScOsdHeight - 1, clrBackground);
|
osd->DrawRectangle(0, 0, ScOsdWidth - 1, ScOsdHeight - 1, clrBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,9 +337,16 @@ void cSkinCursesDisplayMenu::Clear(void)
|
|||||||
textScroller.Reset();
|
textScroller.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cSkinCursesDisplayMenu::DrawTitle(void)
|
||||||
|
{
|
||||||
|
bool WithDisk = MenuCategory() == mcMain || MenuCategory() == mcRecording;
|
||||||
|
osd->DrawText(0, 0, WithDisk ? cString::sprintf("%s - %s", *title, *cVideoDiskUsage::String()) : title, clrBlack, clrCyan, &Font, ScOsdWidth);
|
||||||
|
}
|
||||||
|
|
||||||
void cSkinCursesDisplayMenu::SetTitle(const char *Title)
|
void cSkinCursesDisplayMenu::SetTitle(const char *Title)
|
||||||
{
|
{
|
||||||
osd->DrawText(0, 0, Title, clrBlack, clrCyan, &Font, ScOsdWidth);
|
title = Title;
|
||||||
|
DrawTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinCursesDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
void cSkinCursesDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
||||||
@ -475,6 +487,8 @@ void cSkinCursesDisplayMenu::SetText(const char *Text, bool FixedFont)
|
|||||||
|
|
||||||
void cSkinCursesDisplayMenu::Flush(void)
|
void cSkinCursesDisplayMenu::Flush(void)
|
||||||
{
|
{
|
||||||
|
if (cVideoDiskUsage::HasChanged(lastDiskUsageState))
|
||||||
|
DrawTitle();
|
||||||
cString date = DayDateTime();
|
cString date = DayDateTime();
|
||||||
osd->DrawText(ScOsdWidth - Utf8StrLen(date) - 2, 0, date, clrBlack, clrCyan, &Font);
|
osd->DrawText(ScOsdWidth - Utf8StrLen(date) - 2, 0, date, clrBlack, clrCyan, &Font);
|
||||||
osd->Flush();
|
osd->Flush();
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: channels.c 2.21 2012/03/11 13:29:06 kls Exp $
|
* $Id: channels.c 2.22 2012/04/01 09:27:08 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "channels.h"
|
#include "channels.h"
|
||||||
@ -955,7 +955,7 @@ int cChannels::MaxShortChannelNameLength(void)
|
|||||||
if (!maxShortChannelNameLength) {
|
if (!maxShortChannelNameLength) {
|
||||||
for (cChannel *channel = First(); channel; channel = Next(channel)) {
|
for (cChannel *channel = First(); channel; channel = Next(channel)) {
|
||||||
if (!channel->GroupSep())
|
if (!channel->GroupSep())
|
||||||
maxShortChannelNameLength = max(Utf8StrLen(channel->ShortName()), maxShortChannelNameLength);
|
maxShortChannelNameLength = max(Utf8StrLen(channel->ShortName(true)), maxShortChannelNameLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return maxShortChannelNameLength;
|
return maxShortChannelNameLength;
|
||||||
|
3
ci.c
3
ci.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: ci.c 2.8 2012/02/29 10:24:41 kls Exp $
|
* $Id: ci.c 2.9 2012/05/29 11:13:40 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ci.h"
|
#include "ci.h"
|
||||||
@ -1715,6 +1715,7 @@ bool cCamSlot::Reset(void)
|
|||||||
if (ciAdapter->Reset(slotIndex)) {
|
if (ciAdapter->Reset(slotIndex)) {
|
||||||
resetTime = time(NULL);
|
resetTime = time(NULL);
|
||||||
dbgprotocol("ok.\n");
|
dbgprotocol("ok.\n");
|
||||||
|
lastModuleStatus = msReset;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
dbgprotocol("failed!\n");
|
dbgprotocol("failed!\n");
|
||||||
|
11
config.c
11
config.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.c 2.20 2012/02/29 10:15:54 kls Exp $
|
* $Id: config.c 2.22 2012/05/11 11:06:57 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -309,9 +309,9 @@ cSetupLine::cSetupLine(void)
|
|||||||
|
|
||||||
cSetupLine::cSetupLine(const char *Name, const char *Value, const char *Plugin)
|
cSetupLine::cSetupLine(const char *Name, const char *Value, const char *Plugin)
|
||||||
{
|
{
|
||||||
name = strdup(Name);
|
name = strreplace(strdup(Name), '\n', 0);
|
||||||
value = strdup(Value);
|
value = strreplace(strdup(Value), '\n', 0);
|
||||||
plugin = Plugin ? strdup(Plugin) : NULL;
|
plugin = Plugin ? strreplace(strdup(Plugin), '\n', 0) : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cSetupLine::~cSetupLine()
|
cSetupLine::~cSetupLine()
|
||||||
@ -391,6 +391,7 @@ cSetup::cSetup(void)
|
|||||||
SetSystemTime = 0;
|
SetSystemTime = 0;
|
||||||
TimeSource = 0;
|
TimeSource = 0;
|
||||||
TimeTransponder = 0;
|
TimeTransponder = 0;
|
||||||
|
StandardCompliance = STANDARD_DVB;
|
||||||
MarginStart = 2;
|
MarginStart = 2;
|
||||||
MarginStop = 10;
|
MarginStop = 10;
|
||||||
AudioLanguages[0] = -1;
|
AudioLanguages[0] = -1;
|
||||||
@ -585,6 +586,7 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "SetSystemTime")) SetSystemTime = atoi(Value);
|
else if (!strcasecmp(Name, "SetSystemTime")) SetSystemTime = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "TimeSource")) TimeSource = cSource::FromString(Value);
|
else if (!strcasecmp(Name, "TimeSource")) TimeSource = cSource::FromString(Value);
|
||||||
else if (!strcasecmp(Name, "TimeTransponder")) TimeTransponder = atoi(Value);
|
else if (!strcasecmp(Name, "TimeTransponder")) TimeTransponder = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "StandardCompliance")) StandardCompliance = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "MarginStart")) MarginStart = atoi(Value);
|
else if (!strcasecmp(Name, "MarginStart")) MarginStart = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "MarginStop")) MarginStop = atoi(Value);
|
else if (!strcasecmp(Name, "MarginStop")) MarginStop = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "AudioLanguages")) return ParseLanguages(Value, AudioLanguages);
|
else if (!strcasecmp(Name, "AudioLanguages")) return ParseLanguages(Value, AudioLanguages);
|
||||||
@ -682,6 +684,7 @@ bool cSetup::Save(void)
|
|||||||
Store("SetSystemTime", SetSystemTime);
|
Store("SetSystemTime", SetSystemTime);
|
||||||
Store("TimeSource", cSource::ToString(TimeSource));
|
Store("TimeSource", cSource::ToString(TimeSource));
|
||||||
Store("TimeTransponder", TimeTransponder);
|
Store("TimeTransponder", TimeTransponder);
|
||||||
|
Store("StandardCompliance", StandardCompliance);
|
||||||
Store("MarginStart", MarginStart);
|
Store("MarginStart", MarginStart);
|
||||||
Store("MarginStop", MarginStop);
|
Store("MarginStop", MarginStop);
|
||||||
StoreLanguages("AudioLanguages", AudioLanguages);
|
StoreLanguages("AudioLanguages", AudioLanguages);
|
||||||
|
21
config.h
21
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 2.45 2012/03/11 10:41:44 kls Exp $
|
* $Id: config.h 2.47 2012/04/15 10:45:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -22,13 +22,13 @@
|
|||||||
|
|
||||||
// VDR's own version number:
|
// VDR's own version number:
|
||||||
|
|
||||||
#define VDRVERSION "1.7.27"
|
#define VDRVERSION "1.7.28"
|
||||||
#define VDRVERSNUM 10727 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10728 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
|
||||||
#define APIVERSION "1.7.27"
|
#define APIVERSION "1.7.28"
|
||||||
#define APIVERSNUM 10727 // Version * 10000 + Major * 100 + Minor
|
#define APIVERSNUM 10728 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// When loading plugins, VDR searches them by their APIVERSION, which
|
// When loading plugins, VDR searches them by their APIVERSION, which
|
||||||
// may be smaller than VDRVERSION in case there have been no changes to
|
// may be smaller than VDRVERSION in case there have been no changes to
|
||||||
@ -52,6 +52,16 @@
|
|||||||
#define MaxSkinName 16
|
#define MaxSkinName 16
|
||||||
#define MaxThemeName 16
|
#define MaxThemeName 16
|
||||||
|
|
||||||
|
// Basically VDR works according to the DVB standard, but there are countries/providers
|
||||||
|
// that use other standards, which in some details deviate from the DVB standard.
|
||||||
|
// This makes it necessary to handle things differently in some areas, depending on
|
||||||
|
// which standard is actually used. The following macros are used to distinguish
|
||||||
|
// these cases (make sure to adjust cMenuSetupDVB::standardComplianceTexts accordingly
|
||||||
|
// when adding a new standard):
|
||||||
|
|
||||||
|
#define STANDARD_DVB 0
|
||||||
|
#define STANDARD_ANSISCTE 1
|
||||||
|
|
||||||
typedef uint32_t in_addr_t; //XXX from /usr/include/netinet/in.h (apparently this is not defined on systems with glibc < 2.2)
|
typedef uint32_t in_addr_t; //XXX from /usr/include/netinet/in.h (apparently this is not defined on systems with glibc < 2.2)
|
||||||
|
|
||||||
class cSVDRPhost : public cListObject {
|
class cSVDRPhost : public cListObject {
|
||||||
@ -255,6 +265,7 @@ public:
|
|||||||
int SetSystemTime;
|
int SetSystemTime;
|
||||||
int TimeSource;
|
int TimeSource;
|
||||||
int TimeTransponder;
|
int TimeTransponder;
|
||||||
|
int StandardCompliance;
|
||||||
int MarginStart, MarginStop;
|
int MarginStart, MarginStop;
|
||||||
int AudioLanguages[I18N_MAX_LANGUAGES + 1];
|
int AudioLanguages[I18N_MAX_LANGUAGES + 1];
|
||||||
int DisplaySubtitles;
|
int DisplaySubtitles;
|
||||||
|
4
cutter.c
4
cutter.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: cutter.c 2.11 2012/02/16 12:08:39 kls Exp $
|
* $Id: cutter.c 2.12 2012/06/02 13:46:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "cutter.h"
|
#include "cutter.h"
|
||||||
@ -270,7 +270,7 @@ bool cCutter::Active(const char *FileName)
|
|||||||
error = cuttingThread->Error();
|
error = cuttingThread->Error();
|
||||||
Stop();
|
Stop();
|
||||||
if (!error)
|
if (!error)
|
||||||
cRecordingUserCommand::InvokeCommand(RUC_EDITEDRECORDING, editedVersionName);
|
cRecordingUserCommand::InvokeCommand(RUC_EDITEDRECORDING, editedVersionName, originalVersionName);
|
||||||
originalVersionName = NULL;
|
originalVersionName = NULL;
|
||||||
editedVersionName = NULL;
|
editedVersionName = NULL;
|
||||||
ended = true;
|
ended = true;
|
||||||
|
13
device.c
13
device.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c 2.58 2012/03/13 09:48:14 kls Exp $
|
* $Id: device.c 2.60 2012/04/26 09:40:36 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -162,6 +162,11 @@ int cDevice::DeviceNumber(void) const
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cString cDevice::DeviceType(void) const
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
cString cDevice::DeviceName(void) const
|
cString cDevice::DeviceName(void) const
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
@ -1176,8 +1181,10 @@ void cDevice::StillPicture(const uchar *Data, int Length)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
StillPicture(buf, Size);
|
if (buf) {
|
||||||
free(buf);
|
StillPicture(buf, Size);
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
device.h
8
device.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.h 2.38 2012/03/13 10:17:16 kls Exp $
|
* $Id: device.h 2.39 2012/04/04 09:48:21 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -201,6 +201,12 @@ public:
|
|||||||
///< Returns the card index of this device (0 ... MAXDEVICES - 1).
|
///< Returns the card index of this device (0 ... MAXDEVICES - 1).
|
||||||
int DeviceNumber(void) const;
|
int DeviceNumber(void) const;
|
||||||
///< Returns the number of this device (0 ... numDevices).
|
///< Returns the number of this device (0 ... numDevices).
|
||||||
|
virtual cString DeviceType(void) const;
|
||||||
|
///< Returns a string identifying the type of this device (like "DVB-S").
|
||||||
|
///< If this device can receive different delivery systems, the returned
|
||||||
|
///< string shall be that of the currently used system.
|
||||||
|
///< The length of the returned string should not exceed 6 characters.
|
||||||
|
///< The default implementation returns an empty string.
|
||||||
virtual cString DeviceName(void) const;
|
virtual cString DeviceName(void) const;
|
||||||
///< Returns a string identifying the name of this device.
|
///< Returns a string identifying the name of this device.
|
||||||
///< The default implementation returns an empty string.
|
///< The default implementation returns an empty string.
|
||||||
|
48
dvbdevice.c
48
dvbdevice.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 2.69 2012/03/25 10:41:45 kls Exp $
|
* $Id: dvbdevice.c 2.71 2012/05/09 08:33:59 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -285,6 +285,7 @@ class cDvbTuner : public cThread {
|
|||||||
private:
|
private:
|
||||||
static cMutex bondMutex;
|
static cMutex bondMutex;
|
||||||
enum eTunerStatus { tsIdle, tsSet, tsTuned, tsLocked };
|
enum eTunerStatus { tsIdle, tsSet, tsTuned, tsLocked };
|
||||||
|
int frontendType;
|
||||||
const cDvbDevice *device;
|
const cDvbDevice *device;
|
||||||
int fd_frontend;
|
int fd_frontend;
|
||||||
int adapter, frontend;
|
int adapter, frontend;
|
||||||
@ -302,7 +303,6 @@ private:
|
|||||||
cCondVar newSet;
|
cCondVar newSet;
|
||||||
cDvbTuner *bondedTuner;
|
cDvbTuner *bondedTuner;
|
||||||
bool bondedMaster;
|
bool bondedMaster;
|
||||||
bool bondedMasterFailed;
|
|
||||||
bool SetFrontendType(const cChannel *Channel);
|
bool SetFrontendType(const cChannel *Channel);
|
||||||
cString GetBondingParams(const cChannel *Channel = NULL) const;
|
cString GetBondingParams(const cChannel *Channel = NULL) const;
|
||||||
void ClearEventQueue(void) const;
|
void ClearEventQueue(void) const;
|
||||||
@ -314,6 +314,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int Frontend);
|
cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int Frontend);
|
||||||
virtual ~cDvbTuner();
|
virtual ~cDvbTuner();
|
||||||
|
int FrontendType(void) const { return frontendType; }
|
||||||
bool Bond(cDvbTuner *Tuner);
|
bool Bond(cDvbTuner *Tuner);
|
||||||
void UnBond(void);
|
void UnBond(void);
|
||||||
bool BondingOk(const cChannel *Channel, bool ConsiderOccupied = false) const;
|
bool BondingOk(const cChannel *Channel, bool ConsiderOccupied = false) const;
|
||||||
@ -331,6 +332,7 @@ cMutex cDvbTuner::bondMutex;
|
|||||||
|
|
||||||
cDvbTuner::cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int Frontend)
|
cDvbTuner::cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int Frontend)
|
||||||
{
|
{
|
||||||
|
frontendType = SYS_UNDEFINED;
|
||||||
device = Device;
|
device = Device;
|
||||||
fd_frontend = Fd_Frontend;
|
fd_frontend = Fd_Frontend;
|
||||||
adapter = Adapter;
|
adapter = Adapter;
|
||||||
@ -345,7 +347,6 @@ cDvbTuner::cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int
|
|||||||
tunerStatus = tsIdle;
|
tunerStatus = tsIdle;
|
||||||
bondedTuner = NULL;
|
bondedTuner = NULL;
|
||||||
bondedMaster = false;
|
bondedMaster = false;
|
||||||
bondedMasterFailed = false;
|
|
||||||
SetDescription("tuner on frontend %d/%d", adapter, frontend);
|
SetDescription("tuner on frontend %d/%d", adapter, frontend);
|
||||||
Start();
|
Start();
|
||||||
}
|
}
|
||||||
@ -435,12 +436,8 @@ cDvbTuner *cDvbTuner::GetBondedMaster(void)
|
|||||||
if (!bondedTuner)
|
if (!bondedTuner)
|
||||||
return this; // an unbonded tuner is always "master"
|
return this; // an unbonded tuner is always "master"
|
||||||
cMutexLock MutexLock(&bondMutex);
|
cMutexLock MutexLock(&bondMutex);
|
||||||
if (bondedMaster) {
|
if (bondedMaster)
|
||||||
if (!bondedMasterFailed)
|
return this;
|
||||||
return this;
|
|
||||||
else
|
|
||||||
bondedMaster = false;
|
|
||||||
}
|
|
||||||
// This tuner is bonded, but it's not the master, so let's see if there is a master at all:
|
// This tuner is bonded, but it's not the master, so let's see if there is a master at all:
|
||||||
if (cDvbTuner *t = bondedTuner) {
|
if (cDvbTuner *t = bondedTuner) {
|
||||||
while (t != this) {
|
while (t != this) {
|
||||||
@ -450,18 +447,9 @@ cDvbTuner *cDvbTuner::GetBondedMaster(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// None of the other bonded tuners is master, so make this one the master:
|
// None of the other bonded tuners is master, so make this one the master:
|
||||||
cDvbTuner *t = this;
|
bondedMaster = true;
|
||||||
if (bondedMasterFailed) {
|
dsyslog("tuner %d/%d is now bonded master", adapter, frontend);
|
||||||
// This one has failed, so switch to the next one:
|
return this;
|
||||||
t = bondedTuner;
|
|
||||||
t->bondedMasterFailed = false;
|
|
||||||
cMutexLock MutexLock(&t->mutex);
|
|
||||||
t->channel = channel;
|
|
||||||
t->tunerStatus = tsSet;
|
|
||||||
}
|
|
||||||
t->bondedMaster = true;
|
|
||||||
dsyslog("tuner %d/%d is now bonded master", t->adapter, t->frontend);
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
||||||
@ -733,7 +721,7 @@ bool cDvbTuner::SetFrontend(void)
|
|||||||
cDvbTransponderParameters dtp(channel.Parameters());
|
cDvbTransponderParameters dtp(channel.Parameters());
|
||||||
|
|
||||||
// Determine the required frontend type:
|
// Determine the required frontend type:
|
||||||
int frontendType = GetRequiredDeliverySystem(&channel, &dtp);
|
frontendType = GetRequiredDeliverySystem(&channel, &dtp);
|
||||||
if (frontendType == SYS_UNDEFINED)
|
if (frontendType == SYS_UNDEFINED)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -875,9 +863,6 @@ void cDvbTuner::Action(void)
|
|||||||
isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder());
|
isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder());
|
||||||
lastTimeoutReport = time(NULL);
|
lastTimeoutReport = time(NULL);
|
||||||
}
|
}
|
||||||
cMutexLock MutexLock(&bondMutex);
|
|
||||||
if (bondedTuner && bondedMaster)
|
|
||||||
bondedMasterFailed = true; // give an other tuner a chance in case the sat cable was disconnected
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
WaitTime = 100; // allows for a quick change from tsTuned to tsLocked
|
WaitTime = 100; // allows for a quick change from tsTuned to tsLocked
|
||||||
@ -977,7 +962,7 @@ int cDvbDevice::setTransferModeForDolbyDigital = 1;
|
|||||||
cMutex cDvbDevice::bondMutex;
|
cMutex cDvbDevice::bondMutex;
|
||||||
|
|
||||||
const char *DeliverySystemNames[] = {
|
const char *DeliverySystemNames[] = {
|
||||||
"UNDEFINED",
|
"",
|
||||||
"DVB-C",
|
"DVB-C",
|
||||||
"DVB-C",
|
"DVB-C",
|
||||||
"DVB-T",
|
"DVB-T",
|
||||||
@ -1090,6 +1075,17 @@ bool cDvbDevice::Probe(int Adapter, int Frontend)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cString cDvbDevice::DeviceType(void) const
|
||||||
|
{
|
||||||
|
if (dvbTuner) {
|
||||||
|
if (dvbTuner->FrontendType() != SYS_UNDEFINED)
|
||||||
|
return DeliverySystemNames[dvbTuner->FrontendType()];
|
||||||
|
if (numDeliverySystems)
|
||||||
|
return DeliverySystemNames[deliverySystems[0]]; // to have some reasonable default
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
cString cDvbDevice::DeviceName(void) const
|
cString cDvbDevice::DeviceName(void) const
|
||||||
{
|
{
|
||||||
return frontendInfo.name;
|
return frontendInfo.name;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.h 2.25 2012/03/13 10:11:15 kls Exp $
|
* $Id: dvbdevice.h 2.26 2012/03/31 11:13:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -138,6 +138,7 @@ public:
|
|||||||
int Adapter(void) const { return adapter; }
|
int Adapter(void) const { return adapter; }
|
||||||
int Frontend(void) const { return frontend; }
|
int Frontend(void) const { return frontend; }
|
||||||
virtual bool Ready(void);
|
virtual bool Ready(void);
|
||||||
|
virtual cString DeviceType(void) const;
|
||||||
virtual cString DeviceName(void) const;
|
virtual cString DeviceName(void) const;
|
||||||
static bool BondDevices(const char *Bondings);
|
static bool BondDevices(const char *Bondings);
|
||||||
///< Bonds the devices as defined in the given Bondings string.
|
///< Bonds the devices as defined in the given Bondings string.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbplayer.c 2.26 2012/03/12 14:36:55 kls Exp $
|
* $Id: dvbplayer.c 2.27 2012/05/06 11:02:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbplayer.h"
|
#include "dvbplayer.h"
|
||||||
@ -408,7 +408,7 @@ void cDvbPlayer::Action(void)
|
|||||||
Goto(0, true);
|
Goto(0, true);
|
||||||
while (Running()) {
|
while (Running()) {
|
||||||
if (WaitingForData)
|
if (WaitingForData)
|
||||||
nonBlockingFileReader->WaitForDataMs(3); // this keeps the CPU load low, but reacts immediately on new data
|
WaitingForData = !nonBlockingFileReader->WaitForDataMs(3); // this keeps the CPU load low, but reacts immediately on new data
|
||||||
else if (Sleep) {
|
else if (Sleep) {
|
||||||
cPoller Poller;
|
cPoller Poller;
|
||||||
DevicePoll(Poller, 10);
|
DevicePoll(Poller, 10);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Original author: Marco Schluessler <marco@lordzodiac.de>
|
* Original author: Marco Schluessler <marco@lordzodiac.de>
|
||||||
* With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
|
* With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
|
||||||
*
|
*
|
||||||
* $Id: dvbsubtitle.c 2.31 2012/03/16 11:56:56 kls Exp $
|
* $Id: dvbsubtitle.c 2.32 2012/05/08 08:17:17 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -217,7 +217,7 @@ void cSubtitleObject::DecodeCharacterString(const uchar *Data, int NumberOfCodes
|
|||||||
char txt[NumberOfCodes + 1];
|
char txt[NumberOfCodes + 1];
|
||||||
char *p = txt;
|
char *p = txt;
|
||||||
for (int i = 2; i < NumberOfCodes; ++i) {
|
for (int i = 2; i < NumberOfCodes; ++i) {
|
||||||
char c = Data[i * 2 + 1] & 0xFF;
|
uchar c = Data[i * 2 + 1] & 0xFF;
|
||||||
if (c == 0)
|
if (c == 0)
|
||||||
break;
|
break;
|
||||||
if (' ' <= c && c <= '~' || c == '\n' || 0xA0 <= c)
|
if (' ' <= c && c <= '~' || c == '\n' || 0xA0 <= c)
|
||||||
|
7
eit.c
7
eit.c
@ -8,7 +8,7 @@
|
|||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
||||||
*
|
*
|
||||||
* $Id: eit.c 2.16 2012/03/14 10:11:15 kls Exp $
|
* $Id: eit.c 2.17 2012/06/02 14:05:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eit.h"
|
#include "eit.h"
|
||||||
@ -290,6 +290,11 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo
|
|||||||
channel->SetLinkChannels(LinkChannels);
|
channel->SetLinkChannels(LinkChannels);
|
||||||
Modified = true;
|
Modified = true;
|
||||||
EpgHandlers.HandleEvent(pEvent);
|
EpgHandlers.HandleEvent(pEvent);
|
||||||
|
|
||||||
|
if (EpgHandlers.DeleteEvent(pEvent)) {
|
||||||
|
pSchedule->DelEvent(pEvent);
|
||||||
|
pEvent = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Tid == 0x4E) {
|
if (Tid == 0x4E) {
|
||||||
if (Empty && getSectionNumber() == 0)
|
if (Empty && getSectionNumber() == 0)
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: eitscan.c 2.6 2012/03/07 13:54:34 kls Exp $
|
* $Id: eitscan.c 2.7 2012/04/07 14:39:28 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eitscan.h"
|
#include "eitscan.h"
|
||||||
@ -148,7 +148,7 @@ void cEITScanner::Process(void)
|
|||||||
if (Channel) {
|
if (Channel) {
|
||||||
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
||||||
if (Device->ProvidesTransponder(Channel)) {
|
if (Device->ProvidesTransponder(Channel)) {
|
||||||
if (!Device->Receiving()) {
|
if (Device->Priority() < 0) {
|
||||||
bool MaySwitchTransponder = Device->MaySwitchTransponder(Channel);
|
bool MaySwitchTransponder = Device->MaySwitchTransponder(Channel);
|
||||||
if (MaySwitchTransponder || Device->ProvidesTransponderExclusively(Channel) && now - lastActivity > Setup.EPGScanTimeout * 3600) {
|
if (MaySwitchTransponder || Device->ProvidesTransponderExclusively(Channel) && now - lastActivity > Setup.EPGScanTimeout * 3600) {
|
||||||
if (!MaySwitchTransponder) {
|
if (!MaySwitchTransponder) {
|
||||||
|
15
epg.c
15
epg.c
@ -7,7 +7,7 @@
|
|||||||
* Original version (as used in VDR before 1.3.0) written by
|
* Original version (as used in VDR before 1.3.0) written by
|
||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
*
|
*
|
||||||
* $Id: epg.c 2.12 2012/03/10 13:14:27 kls Exp $
|
* $Id: epg.c 2.14 2012/06/02 14:08:12 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "epg.h"
|
#include "epg.h"
|
||||||
@ -1125,7 +1125,7 @@ cSchedulesLock::~cSchedulesLock()
|
|||||||
// --- cSchedules ------------------------------------------------------------
|
// --- cSchedules ------------------------------------------------------------
|
||||||
|
|
||||||
cSchedules cSchedules::schedules;
|
cSchedules cSchedules::schedules;
|
||||||
const char *cSchedules::epgDataFileName = NULL;
|
char *cSchedules::epgDataFileName = NULL;
|
||||||
time_t cSchedules::lastCleanup = time(NULL);
|
time_t cSchedules::lastCleanup = time(NULL);
|
||||||
time_t cSchedules::lastDump = time(NULL);
|
time_t cSchedules::lastDump = time(NULL);
|
||||||
time_t cSchedules::modified = 0;
|
time_t cSchedules::modified = 0;
|
||||||
@ -1137,7 +1137,7 @@ const cSchedules *cSchedules::Schedules(cSchedulesLock &SchedulesLock)
|
|||||||
|
|
||||||
void cSchedules::SetEpgDataFileName(const char *FileName)
|
void cSchedules::SetEpgDataFileName(const char *FileName)
|
||||||
{
|
{
|
||||||
delete epgDataFileName;
|
free(epgDataFileName);
|
||||||
epgDataFileName = FileName ? strdup(FileName) : NULL;
|
epgDataFileName = FileName ? strdup(FileName) : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1429,6 +1429,15 @@ void cEpgHandlers::HandleEvent(cEvent *Event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cEpgHandlers::DeleteEvent(const cEvent *Event)
|
||||||
|
{
|
||||||
|
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
|
||||||
|
if (eh->DeleteEvent(Event))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void cEpgHandlers::SortSchedule(cSchedule *Schedule)
|
void cEpgHandlers::SortSchedule(cSchedule *Schedule)
|
||||||
{
|
{
|
||||||
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
|
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
|
||||||
|
8
epg.h
8
epg.h
@ -7,7 +7,7 @@
|
|||||||
* Original version (as used in VDR before 1.3.0) written by
|
* Original version (as used in VDR before 1.3.0) written by
|
||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
*
|
*
|
||||||
* $Id: epg.h 2.8 2012/03/10 13:50:10 kls Exp $
|
* $Id: epg.h 2.10 2012/06/02 14:07:51 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __EPG_H
|
#ifndef __EPG_H
|
||||||
@ -192,7 +192,7 @@ class cSchedules : public cList<cSchedule> {
|
|||||||
private:
|
private:
|
||||||
cRwLock rwlock;
|
cRwLock rwlock;
|
||||||
static cSchedules schedules;
|
static cSchedules schedules;
|
||||||
static const char *epgDataFileName;
|
static char *epgDataFileName;
|
||||||
static time_t lastCleanup;
|
static time_t lastCleanup;
|
||||||
static time_t lastDump;
|
static time_t lastDump;
|
||||||
static time_t modified;
|
static time_t modified;
|
||||||
@ -258,6 +258,9 @@ public:
|
|||||||
virtual bool HandleEvent(cEvent *Event) { return false; }
|
virtual bool HandleEvent(cEvent *Event) { return false; }
|
||||||
///< After all modifications of the Event have been done, the EPG handler
|
///< After all modifications of the Event have been done, the EPG handler
|
||||||
///< can take a final look at it.
|
///< can take a final look at it.
|
||||||
|
virtual bool DeleteEvent(const cEvent *Event) { return false; }
|
||||||
|
///< After the complete processing of the Event is finished, an EPG handler
|
||||||
|
///< can decide that this Event shall be deleted from its schedule.
|
||||||
virtual bool SortSchedule(cSchedule *Schedule) { return false; }
|
virtual bool SortSchedule(cSchedule *Schedule) { return false; }
|
||||||
///< Sorts the Schedule after the complete table has been processed.
|
///< Sorts the Schedule after the complete table has been processed.
|
||||||
virtual bool DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version) { return false; }
|
virtual bool DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version) { return false; }
|
||||||
@ -280,6 +283,7 @@ public:
|
|||||||
void SetVps(cEvent *Event, time_t Vps);
|
void SetVps(cEvent *Event, time_t Vps);
|
||||||
void FixEpgBugs(cEvent *Event);
|
void FixEpgBugs(cEvent *Event);
|
||||||
void HandleEvent(cEvent *Event);
|
void HandleEvent(cEvent *Event);
|
||||||
|
bool DeleteEvent(const cEvent *Event);
|
||||||
void SortSchedule(cSchedule *Schedule);
|
void SortSchedule(cSchedule *Schedule);
|
||||||
void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version);
|
void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version);
|
||||||
};
|
};
|
||||||
|
9
font.c
9
font.c
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya.
|
* BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya.
|
||||||
*
|
*
|
||||||
* $Id: font.c 2.10 2012/03/02 10:47:45 kls Exp $
|
* $Id: font.c 2.13 2012/06/02 13:38:28 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
@ -412,7 +412,7 @@ const cFont *cFont::GetFont(eDvbFont Font)
|
|||||||
if (!fonts[Font]) {
|
if (!fonts[Font]) {
|
||||||
switch (Font) {
|
switch (Font) {
|
||||||
case fontOsd: SetFont(Font, Setup.FontOsd, Setup.FontOsdSize); break;
|
case fontOsd: SetFont(Font, Setup.FontOsd, Setup.FontOsdSize); break;
|
||||||
case fontSml: SetFont(Font, Setup.FontSml, Setup.FontSmlSize); break;
|
case fontSml: SetFont(Font, Setup.FontSml, min(Setup.FontSmlSize, Setup.FontOsdSize)); break;
|
||||||
case fontFix: SetFont(Font, Setup.FontFix, Setup.FontFixSize); break;
|
case fontFix: SetFont(Font, Setup.FontFix, Setup.FontFixSize); break;
|
||||||
default: esyslog("ERROR: unknown Font %d (%s %d)", Font, __FUNCTION__, __LINE__);
|
default: esyslog("ERROR: unknown Font %d (%s %d)", Font, __FUNCTION__, __LINE__);
|
||||||
}
|
}
|
||||||
@ -482,7 +482,8 @@ cString cFont::GetFontFileName(const char *FontName)
|
|||||||
FcPatternAddBool(pat, FC_SCALABLE, FcTrue);
|
FcPatternAddBool(pat, FC_SCALABLE, FcTrue);
|
||||||
FcConfigSubstitute(NULL, pat, FcMatchPattern);
|
FcConfigSubstitute(NULL, pat, FcMatchPattern);
|
||||||
FcDefaultSubstitute(pat);
|
FcDefaultSubstitute(pat);
|
||||||
FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, NULL);
|
FcResult fresult;
|
||||||
|
FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, &fresult);
|
||||||
if (fontset) {
|
if (fontset) {
|
||||||
for (int i = 0; i < fontset->nfont; i++) {
|
for (int i = 0; i < fontset->nfont; i++) {
|
||||||
FcBool scalable;
|
FcBool scalable;
|
||||||
@ -508,7 +509,7 @@ cString cFont::GetFontFileName(const char *FontName)
|
|||||||
#ifdef BIDI
|
#ifdef BIDI
|
||||||
cString cFont::Bidi(const char *Ltr)
|
cString cFont::Bidi(const char *Ltr)
|
||||||
{
|
{
|
||||||
if (cCharSetConv::SystemCharacterTable()) { // bidi requires UTF-8
|
if (!cCharSetConv::SystemCharacterTable()) { // bidi requires UTF-8
|
||||||
fribidi_set_mirroring(true);
|
fribidi_set_mirroring(true);
|
||||||
fribidi_set_reorder_nsm(false);
|
fribidi_set_reorder_nsm(false);
|
||||||
FriBidiCharSet fribidiCharset = FRIBIDI_CHAR_SET_UTF8;
|
FriBidiCharSet fribidiCharset = FRIBIDI_CHAR_SET_UTF8;
|
||||||
|
156
menu.c
156
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 2.45 2012/03/13 13:14:38 kls Exp $
|
* $Id: menu.c 2.54 2012/05/12 13:08:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -34,7 +34,6 @@
|
|||||||
|
|
||||||
#define MAXWAIT4EPGINFO 3 // seconds
|
#define MAXWAIT4EPGINFO 3 // seconds
|
||||||
#define MODETIMEOUT 3 // seconds
|
#define MODETIMEOUT 3 // seconds
|
||||||
#define DISKSPACECHEK 5 // seconds between disk space checks
|
|
||||||
#define NEWTIMERLIMIT 120 // seconds until the start time of a new timer created from the Schedule menu,
|
#define NEWTIMERLIMIT 120 // seconds until the start time of a new timer created from the Schedule menu,
|
||||||
// within which it will go directly into the "Edit timer" menu to allow
|
// within which it will go directly into the "Edit timer" menu to allow
|
||||||
// further parameter settings
|
// further parameter settings
|
||||||
@ -47,50 +46,10 @@
|
|||||||
#define CAMRESPONSETIMEOUT 5 // seconds to wait for a response from a CAM
|
#define CAMRESPONSETIMEOUT 5 // seconds to wait for a response from a CAM
|
||||||
#define MINFREEDISK 300 // minimum free disk space (in MB) required to start recording
|
#define MINFREEDISK 300 // minimum free disk space (in MB) required to start recording
|
||||||
#define NODISKSPACEDELTA 300 // seconds between "Not enough disk space to start recording!" messages
|
#define NODISKSPACEDELTA 300 // seconds between "Not enough disk space to start recording!" messages
|
||||||
|
#define MAXCHNAMWIDTH 16 // maximum number of characters of channels' short names shown in schedules menus
|
||||||
|
|
||||||
#define CHNUMWIDTH (numdigits(Channels.MaxNumber()) + 1)
|
#define CHNUMWIDTH (numdigits(Channels.MaxNumber()) + 1)
|
||||||
#define CHNAMWIDTH (Channels.MaxShortChannelNameLength() + 1)
|
#define CHNAMWIDTH (min(MAXCHNAMWIDTH, Channels.MaxShortChannelNameLength() + 1))
|
||||||
|
|
||||||
// --- cFreeDiskSpace --------------------------------------------------------
|
|
||||||
|
|
||||||
#define MB_PER_MINUTE 25.75 // this is just an estimate!
|
|
||||||
|
|
||||||
class cFreeDiskSpace {
|
|
||||||
private:
|
|
||||||
static time_t lastDiskSpaceCheck;
|
|
||||||
static int lastFreeMB;
|
|
||||||
static cString freeDiskSpaceString;
|
|
||||||
public:
|
|
||||||
static bool HasChanged(bool ForceCheck = false);
|
|
||||||
static const char *FreeDiskSpaceString(void) { HasChanged(); return freeDiskSpaceString; }
|
|
||||||
};
|
|
||||||
|
|
||||||
time_t cFreeDiskSpace::lastDiskSpaceCheck = 0;
|
|
||||||
int cFreeDiskSpace::lastFreeMB = 0;
|
|
||||||
cString cFreeDiskSpace::freeDiskSpaceString;
|
|
||||||
|
|
||||||
cFreeDiskSpace FreeDiskSpace;
|
|
||||||
|
|
||||||
bool cFreeDiskSpace::HasChanged(bool ForceCheck)
|
|
||||||
{
|
|
||||||
if (ForceCheck || time(NULL) - lastDiskSpaceCheck > DISKSPACECHEK) {
|
|
||||||
int FreeMB;
|
|
||||||
int Percent = VideoDiskSpace(&FreeMB);
|
|
||||||
lastDiskSpaceCheck = time(NULL);
|
|
||||||
if (ForceCheck || FreeMB != lastFreeMB) {
|
|
||||||
int MBperMinute = Recordings.MBperMinute();
|
|
||||||
if (MBperMinute <= 0)
|
|
||||||
MBperMinute = MB_PER_MINUTE;
|
|
||||||
int Minutes = int(double(FreeMB) / MBperMinute);
|
|
||||||
int Hours = Minutes / 60;
|
|
||||||
Minutes %= 60;
|
|
||||||
freeDiskSpaceString = cString::sprintf("%s %d%% - %2d:%02d %s", tr("Disk"), Percent, Hours, Minutes, tr("free"));
|
|
||||||
lastFreeMB = FreeMB;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- cMenuEditCaItem -------------------------------------------------------
|
// --- cMenuEditCaItem -------------------------------------------------------
|
||||||
|
|
||||||
@ -213,6 +172,7 @@ public:
|
|||||||
cMenuEditChannel::cMenuEditChannel(cChannel *Channel, bool New)
|
cMenuEditChannel::cMenuEditChannel(cChannel *Channel, bool New)
|
||||||
:cOsdMenu(tr("Edit channel"), 16)
|
:cOsdMenu(tr("Edit channel"), 16)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcChannel);
|
||||||
channel = Channel;
|
channel = Channel;
|
||||||
sourceParam = NULL;
|
sourceParam = NULL;
|
||||||
*name = 0;
|
*name = 0;
|
||||||
@ -390,6 +350,7 @@ public:
|
|||||||
cMenuChannels::cMenuChannels(void)
|
cMenuChannels::cMenuChannels(void)
|
||||||
:cOsdMenu(tr("Channels"), CHNUMWIDTH)
|
:cOsdMenu(tr("Channels"), CHNUMWIDTH)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcChannel);
|
||||||
number = 0;
|
number = 0;
|
||||||
Setup();
|
Setup();
|
||||||
Channels.IncBeingEdited();
|
Channels.IncBeingEdited();
|
||||||
@ -585,6 +546,7 @@ eOSState cMenuChannels::ProcessKey(eKeys Key)
|
|||||||
cMenuText::cMenuText(const char *Title, const char *Text, eDvbFont Font)
|
cMenuText::cMenuText(const char *Title, const char *Text, eDvbFont Font)
|
||||||
:cOsdMenu(Title)
|
:cOsdMenu(Title)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcText);
|
||||||
text = NULL;
|
text = NULL;
|
||||||
font = Font;
|
font = Font;
|
||||||
SetText(Text);
|
SetText(Text);
|
||||||
@ -673,6 +635,7 @@ public:
|
|||||||
cMenuEditFolder::cMenuEditFolder(const char *Dir, cList<cNestedItem> *List, cNestedItem *Folder)
|
cMenuEditFolder::cMenuEditFolder(const char *Dir, cList<cNestedItem> *List, cNestedItem *Folder)
|
||||||
:cOsdMenu(Folder ? tr("Edit folder") : tr("New folder"), 12)
|
:cOsdMenu(Folder ? tr("Edit folder") : tr("New folder"), 12)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcFolder);
|
||||||
list = List;
|
list = List;
|
||||||
folder = Folder;
|
folder = Folder;
|
||||||
if (folder) {
|
if (folder) {
|
||||||
@ -745,6 +708,7 @@ eOSState cMenuEditFolder::ProcessKey(eKeys Key)
|
|||||||
cMenuFolder::cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path)
|
cMenuFolder::cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path)
|
||||||
:cOsdMenu(Title)
|
:cOsdMenu(Title)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcFolder);
|
||||||
list = nestedItemList = NestedItemList;
|
list = nestedItemList = NestedItemList;
|
||||||
firstFolder = NULL;
|
firstFolder = NULL;
|
||||||
editing = false;
|
editing = false;
|
||||||
@ -756,6 +720,7 @@ cMenuFolder::cMenuFolder(const char *Title, cNestedItemList *NestedItemList, con
|
|||||||
cMenuFolder::cMenuFolder(const char *Title, cList<cNestedItem> *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path)
|
cMenuFolder::cMenuFolder(const char *Title, cList<cNestedItem> *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path)
|
||||||
:cOsdMenu(Title)
|
:cOsdMenu(Title)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcFolder);
|
||||||
list = List;
|
list = List;
|
||||||
nestedItemList = NestedItemList;
|
nestedItemList = NestedItemList;
|
||||||
dir = Dir;
|
dir = Dir;
|
||||||
@ -906,6 +871,7 @@ eOSState cMenuFolder::ProcessKey(eKeys Key)
|
|||||||
cMenuEditTimer::cMenuEditTimer(cTimer *Timer, bool New)
|
cMenuEditTimer::cMenuEditTimer(cTimer *Timer, bool New)
|
||||||
:cOsdMenu(tr("Edit timer"), 12)
|
:cOsdMenu(tr("Edit timer"), 12)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcTimer);
|
||||||
file = NULL;
|
file = NULL;
|
||||||
day = firstday = NULL;
|
day = firstday = NULL;
|
||||||
timer = Timer;
|
timer = Timer;
|
||||||
@ -1104,6 +1070,7 @@ public:
|
|||||||
cMenuTimers::cMenuTimers(void)
|
cMenuTimers::cMenuTimers(void)
|
||||||
:cOsdMenu(tr("Timers"), 2, CHNUMWIDTH, 10, 6, 6)
|
:cOsdMenu(tr("Timers"), 2, CHNUMWIDTH, 10, 6, 6)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcTimer);
|
||||||
helpKeys = -1;
|
helpKeys = -1;
|
||||||
for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
|
for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
|
||||||
timer->SetEventFromSchedule(); // make sure the event is current
|
timer->SetEventFromSchedule(); // make sure the event is current
|
||||||
@ -1242,6 +1209,7 @@ eOSState cMenuTimers::ProcessKey(eKeys Key)
|
|||||||
cMenuEvent::cMenuEvent(const cEvent *Event, bool CanSwitch, bool Buttons)
|
cMenuEvent::cMenuEvent(const cEvent *Event, bool CanSwitch, bool Buttons)
|
||||||
:cOsdMenu(tr("Event"))
|
:cOsdMenu(tr("Event"))
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcEvent);
|
||||||
event = Event;
|
event = Event;
|
||||||
if (event) {
|
if (event) {
|
||||||
cChannel *channel = Channels.GetByChannelID(event->ChannelID(), true);
|
cChannel *channel = Channels.GetByChannelID(event->ChannelID(), true);
|
||||||
@ -1389,6 +1357,7 @@ const cEvent *cMenuWhatsOn::scheduleEvent = NULL;
|
|||||||
cMenuWhatsOn::cMenuWhatsOn(const cSchedules *Schedules, bool Now, int CurrentChannelNr)
|
cMenuWhatsOn::cMenuWhatsOn(const cSchedules *Schedules, bool Now, int CurrentChannelNr)
|
||||||
:cOsdMenu(Now ? tr("What's on now?") : tr("What's on next?"), CHNUMWIDTH, CHNAMWIDTH, 6, 4)
|
:cOsdMenu(Now ? tr("What's on now?") : tr("What's on next?"), CHNUMWIDTH, CHNAMWIDTH, 6, 4)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcSchedule);
|
||||||
now = Now;
|
now = Now;
|
||||||
helpKeys = -1;
|
helpKeys = -1;
|
||||||
timerState = 0;
|
timerState = 0;
|
||||||
@ -1553,6 +1522,7 @@ public:
|
|||||||
cMenuSchedule::cMenuSchedule(void)
|
cMenuSchedule::cMenuSchedule(void)
|
||||||
:cOsdMenu("")
|
:cOsdMenu("")
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcSchedule);
|
||||||
now = next = false;
|
now = next = false;
|
||||||
otherChannel = 0;
|
otherChannel = 0;
|
||||||
helpKeys = -1;
|
helpKeys = -1;
|
||||||
@ -1810,6 +1780,7 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key)
|
|||||||
cMenuCommands::cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters)
|
cMenuCommands::cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters)
|
||||||
:cOsdMenu(Title)
|
:cOsdMenu(Title)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcCommand);
|
||||||
result = NULL;
|
result = NULL;
|
||||||
SetHasHotkeys();
|
SetHasHotkeys();
|
||||||
commands = Commands;
|
commands = Commands;
|
||||||
@ -1939,6 +1910,7 @@ public:
|
|||||||
cMenuCam::cMenuCam(cCamSlot *CamSlot)
|
cMenuCam::cMenuCam(cCamSlot *CamSlot)
|
||||||
:cOsdMenu("", 1) // tab necessary for enquiry!
|
:cOsdMenu("", 1) // tab necessary for enquiry!
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcCam);
|
||||||
camSlot = CamSlot;
|
camSlot = CamSlot;
|
||||||
ciMenu = NULL;
|
ciMenu = NULL;
|
||||||
ciEnquiry = NULL;
|
ciEnquiry = NULL;
|
||||||
@ -2118,6 +2090,7 @@ public:
|
|||||||
cMenuRecording::cMenuRecording(const cRecording *Recording, bool WithButtons)
|
cMenuRecording::cMenuRecording(const cRecording *Recording, bool WithButtons)
|
||||||
:cOsdMenu(tr("Recording info"))
|
:cOsdMenu(tr("Recording info"))
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcRecording);
|
||||||
recording = Recording;
|
recording = Recording;
|
||||||
withButtons = WithButtons;
|
withButtons = WithButtons;
|
||||||
if (withButtons)
|
if (withButtons)
|
||||||
@ -2212,13 +2185,13 @@ void cMenuRecordingItem::IncrementCounter(bool New)
|
|||||||
cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus)
|
cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus)
|
||||||
:cOsdMenu(Base ? Base : tr("Recordings"), 9, 6, 6)
|
:cOsdMenu(Base ? Base : tr("Recordings"), 9, 6, 6)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcRecording);
|
||||||
base = Base ? strdup(Base) : NULL;
|
base = Base ? strdup(Base) : NULL;
|
||||||
level = Setup.RecordingDirs ? Level : -1;
|
level = Setup.RecordingDirs ? Level : -1;
|
||||||
Recordings.StateChanged(recordingsState); // just to get the current state
|
Recordings.StateChanged(recordingsState); // just to get the current state
|
||||||
helpKeys = -1;
|
helpKeys = -1;
|
||||||
Display(); // this keeps the higher level menus from showing up briefly when pressing 'Back' during replay
|
Display(); // this keeps the higher level menus from showing up briefly when pressing 'Back' during replay
|
||||||
Set();
|
Set();
|
||||||
SetFreeDiskDisplay(true);
|
|
||||||
if (Current() < 0)
|
if (Current() < 0)
|
||||||
SetCurrent(First());
|
SetCurrent(First());
|
||||||
else if (OpenSubMenus && cReplayControl::LastReplayed() && Open(true))
|
else if (OpenSubMenus && cReplayControl::LastReplayed() && Open(true))
|
||||||
@ -2233,16 +2206,6 @@ cMenuRecordings::~cMenuRecordings()
|
|||||||
free(base);
|
free(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cMenuRecordings::SetFreeDiskDisplay(bool Force)
|
|
||||||
{
|
|
||||||
if (FreeDiskSpace.HasChanged(Force)) {
|
|
||||||
//XXX -> skin function!!!
|
|
||||||
SetTitle(cString::sprintf("%s - %s", base ? base : tr("Recordings"), FreeDiskSpace.FreeDiskSpaceString()));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cMenuRecordings::SetHelpKeys(void)
|
void cMenuRecordings::SetHelpKeys(void)
|
||||||
{
|
{
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
@ -2305,7 +2268,6 @@ void cMenuRecordings::Set(bool Refresh)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(LastItemText);
|
free(LastItemText);
|
||||||
Refresh |= SetFreeDiskDisplay(Refresh);
|
|
||||||
if (Refresh)
|
if (Refresh)
|
||||||
Display();
|
Display();
|
||||||
}
|
}
|
||||||
@ -2343,7 +2305,7 @@ eOSState cMenuRecordings::Play(void)
|
|||||||
else {
|
else {
|
||||||
cRecording *recording = GetRecording(ri);
|
cRecording *recording = GetRecording(ri);
|
||||||
if (recording) {
|
if (recording) {
|
||||||
cReplayControl::SetRecording(recording->FileName(), recording->Title());
|
cReplayControl::SetRecording(recording->FileName());
|
||||||
return osReplay;
|
return osReplay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2411,7 +2373,7 @@ eOSState cMenuRecordings::Delete(void)
|
|||||||
Recordings.DelByName(ri->FileName());
|
Recordings.DelByName(ri->FileName());
|
||||||
cOsdMenu::Del(Current());
|
cOsdMenu::Del(Current());
|
||||||
SetHelpKeys();
|
SetHelpKeys();
|
||||||
SetFreeDiskDisplay(true);
|
cVideoDiskUsage::ForceCheck();
|
||||||
Display();
|
Display();
|
||||||
if (!Count())
|
if (!Count())
|
||||||
return osBack;
|
return osBack;
|
||||||
@ -2484,8 +2446,6 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key)
|
|||||||
Display();
|
Display();
|
||||||
}
|
}
|
||||||
if (!HasSubMenu()) {
|
if (!HasSubMenu()) {
|
||||||
if (HadSubMenu)
|
|
||||||
SetFreeDiskDisplay();
|
|
||||||
if (Key != kNone)
|
if (Key != kNone)
|
||||||
SetHelpKeys();
|
SetHelpKeys();
|
||||||
}
|
}
|
||||||
@ -2767,6 +2727,7 @@ private:
|
|||||||
void Setup(void);
|
void Setup(void);
|
||||||
const char *videoDisplayFormatTexts[3];
|
const char *videoDisplayFormatTexts[3];
|
||||||
const char *updateChannelsTexts[6];
|
const char *updateChannelsTexts[6];
|
||||||
|
const char *standardComplianceTexts[2];
|
||||||
public:
|
public:
|
||||||
cMenuSetupDVB(void);
|
cMenuSetupDVB(void);
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
@ -2789,6 +2750,8 @@ cMenuSetupDVB::cMenuSetupDVB(void)
|
|||||||
updateChannelsTexts[3] = tr("names and PIDs");
|
updateChannelsTexts[3] = tr("names and PIDs");
|
||||||
updateChannelsTexts[4] = tr("add new channels");
|
updateChannelsTexts[4] = tr("add new channels");
|
||||||
updateChannelsTexts[5] = tr("add new transponders");
|
updateChannelsTexts[5] = tr("add new transponders");
|
||||||
|
standardComplianceTexts[0] = "DVB";
|
||||||
|
standardComplianceTexts[1] = "ANSI/SCTE";
|
||||||
|
|
||||||
SetSection(tr("DVB"));
|
SetSection(tr("DVB"));
|
||||||
SetHelp(NULL, tr("Button$Audio"), tr("Button$Subtitles"), NULL);
|
SetHelp(NULL, tr("Button$Audio"), tr("Button$Subtitles"), NULL);
|
||||||
@ -2802,6 +2765,7 @@ void cMenuSetupDVB::Setup(void)
|
|||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
Add(new cMenuEditIntItem( tr("Setup.DVB$Primary DVB interface"), &data.PrimaryDVB, 1, cDevice::NumDevices()));
|
Add(new cMenuEditIntItem( tr("Setup.DVB$Primary DVB interface"), &data.PrimaryDVB, 1, cDevice::NumDevices()));
|
||||||
|
Add(new cMenuEditStraItem(tr("Setup.DVB$Standard compliance"), &data.StandardCompliance, 2, standardComplianceTexts));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.DVB$Video format"), &data.VideoFormat, "4:3", "16:9"));
|
Add(new cMenuEditBoolItem(tr("Setup.DVB$Video format"), &data.VideoFormat, "4:3", "16:9"));
|
||||||
if (data.VideoFormat == 0)
|
if (data.VideoFormat == 0)
|
||||||
Add(new cMenuEditStraItem(tr("Setup.DVB$Video display format"), &data.VideoDisplayFormat, 3, videoDisplayFormatTexts));
|
Add(new cMenuEditStraItem(tr("Setup.DVB$Video display format"), &data.VideoDisplayFormat, 3, videoDisplayFormatTexts));
|
||||||
@ -3222,8 +3186,13 @@ eOSState cMenuSetupPlugins::ProcessKey(eKeys Key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (state == osContinue)
|
else if (state == osContinue) {
|
||||||
Store();
|
Store();
|
||||||
|
// Reinitialize OSD and skin, in case any plugin setup change has an influence on these:
|
||||||
|
cOsdProvider::UpdateOsdSize(true);
|
||||||
|
SetDisplayMenu();
|
||||||
|
Display();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
@ -3242,6 +3211,7 @@ public:
|
|||||||
cMenuSetup::cMenuSetup(void)
|
cMenuSetup::cMenuSetup(void)
|
||||||
:cOsdMenu("")
|
:cOsdMenu("")
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcSetup);
|
||||||
Set();
|
Set();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3326,6 +3296,7 @@ cOsdObject *cMenuMain::pluginOsdObject = NULL;
|
|||||||
cMenuMain::cMenuMain(eOSState State)
|
cMenuMain::cMenuMain(eOSState State)
|
||||||
:cOsdMenu("")
|
:cOsdMenu("")
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcMain);
|
||||||
replaying = false;
|
replaying = false;
|
||||||
stopReplayItem = NULL;
|
stopReplayItem = NULL;
|
||||||
cancelEditingItem = NULL;
|
cancelEditingItem = NULL;
|
||||||
@ -3394,13 +3365,6 @@ bool cMenuMain::Update(bool Force)
|
|||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
// Title with disk usage:
|
|
||||||
if (FreeDiskSpace.HasChanged(Force)) {
|
|
||||||
//XXX -> skin function!!!
|
|
||||||
SetTitle(cString::sprintf("%s - %s", tr("VDR"), FreeDiskSpace.FreeDiskSpaceString()));
|
|
||||||
result = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NewReplaying = cControl::Control() != NULL;
|
bool NewReplaying = cControl::Control() != NULL;
|
||||||
if (Force || NewReplaying != replaying) {
|
if (Force || NewReplaying != replaying) {
|
||||||
replaying = NewReplaying;
|
replaying = NewReplaying;
|
||||||
@ -4130,6 +4094,8 @@ eOSState cDisplaySubtitleTracks::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
|
cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
|
||||||
{
|
{
|
||||||
|
// Whatever happens here, the timers will be modified in some way...
|
||||||
|
Timers.SetModified();
|
||||||
// We're going to manipulate an event here, so we need to prevent
|
// We're going to manipulate an event here, so we need to prevent
|
||||||
// others from modifying any EPG data:
|
// others from modifying any EPG data:
|
||||||
cSchedulesLock SchedulesLock;
|
cSchedulesLock SchedulesLock;
|
||||||
@ -4144,7 +4110,6 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
|
|||||||
if (!timer) {
|
if (!timer) {
|
||||||
timer = new cTimer(true, Pause);
|
timer = new cTimer(true, Pause);
|
||||||
Timers.Add(timer);
|
Timers.Add(timer);
|
||||||
Timers.SetModified();
|
|
||||||
instantId = cString::sprintf(cDevice::NumDevices() > 1 ? "%s - %d" : "%s", timer->Channel()->Name(), device->CardIndex() + 1);
|
instantId = cString::sprintf(cDevice::NumDevices() > 1 ? "%s - %d" : "%s", timer->Channel()->Name(), device->CardIndex() + 1);
|
||||||
}
|
}
|
||||||
timer->SetPending(true);
|
timer->SetPending(true);
|
||||||
@ -4166,9 +4131,8 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Timers.Del(timer);
|
Timers.Del(timer);
|
||||||
Timers.SetModified();
|
|
||||||
if (!cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
|
if (!cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
|
||||||
cReplayControl::SetRecording(fileName, Recording.Name());
|
cReplayControl::SetRecording(fileName);
|
||||||
}
|
}
|
||||||
timer = NULL;
|
timer = NULL;
|
||||||
return;
|
return;
|
||||||
@ -4183,7 +4147,7 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
|
|||||||
Recording.WriteInfo();
|
Recording.WriteInfo();
|
||||||
cStatus::MsgRecording(device, Recording.Name(), Recording.FileName(), true);
|
cStatus::MsgRecording(device, Recording.Name(), Recording.FileName(), true);
|
||||||
if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
|
if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
|
||||||
cReplayControl::SetRecording(fileName, Recording.Name());
|
cReplayControl::SetRecording(fileName);
|
||||||
Recordings.AddByName(fileName);
|
Recordings.AddByName(fileName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -4194,7 +4158,6 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
|
|||||||
timer->SetDeferred(DEFERTIMER);
|
timer->SetDeferred(DEFERTIMER);
|
||||||
if (!Timer) {
|
if (!Timer) {
|
||||||
Timers.Del(timer);
|
Timers.Del(timer);
|
||||||
Timers.SetModified();
|
|
||||||
timer = NULL;
|
timer = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4244,6 +4207,7 @@ void cRecordControl::Stop(bool ExecuteUserCommand)
|
|||||||
cStatus::MsgRecording(device, NULL, fileName, false);
|
cStatus::MsgRecording(device, NULL, fileName, false);
|
||||||
if (ExecuteUserCommand)
|
if (ExecuteUserCommand)
|
||||||
cRecordingUserCommand::InvokeCommand(RUC_AFTERRECORDING, fileName);
|
cRecordingUserCommand::InvokeCommand(RUC_AFTERRECORDING, fileName);
|
||||||
|
Timers.SetModified();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4337,7 +4301,7 @@ void cRecordControls::Stop(const char *InstantId)
|
|||||||
bool cRecordControls::PauseLiveVideo(void)
|
bool cRecordControls::PauseLiveVideo(void)
|
||||||
{
|
{
|
||||||
Skins.Message(mtStatus, tr("Pausing live video..."));
|
Skins.Message(mtStatus, tr("Pausing live video..."));
|
||||||
cReplayControl::SetRecording(NULL, NULL); // make sure the new cRecordControl will set cReplayControl::LastReplayed()
|
cReplayControl::SetRecording(NULL); // make sure the new cRecordControl will set cReplayControl::LastReplayed()
|
||||||
if (Start(NULL, true)) {
|
if (Start(NULL, true)) {
|
||||||
cReplayControl *rc = new cReplayControl(true);
|
cReplayControl *rc = new cReplayControl(true);
|
||||||
cControl::Launch(rc);
|
cControl::Launch(rc);
|
||||||
@ -4373,6 +4337,15 @@ cRecordControl *cRecordControls::GetRecordControl(const char *FileName)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cRecordControl *cRecordControls::GetRecordControl(const cTimer *Timer)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < MAXRECORDCONTROLS; i++) {
|
||||||
|
if (RecordControls[i] && RecordControls[i]->Timer() == Timer)
|
||||||
|
return RecordControls[i];
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void cRecordControls::Process(time_t t)
|
void cRecordControls::Process(time_t t)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < MAXRECORDCONTROLS; i++) {
|
for (int i = 0; i < MAXRECORDCONTROLS; i++) {
|
||||||
@ -4429,8 +4402,7 @@ bool cRecordControls::StateChanged(int &State)
|
|||||||
// --- cReplayControl --------------------------------------------------------
|
// --- cReplayControl --------------------------------------------------------
|
||||||
|
|
||||||
cReplayControl *cReplayControl::currentReplayControl = NULL;
|
cReplayControl *cReplayControl::currentReplayControl = NULL;
|
||||||
char *cReplayControl::fileName = NULL;
|
cString cReplayControl::fileName;
|
||||||
char *cReplayControl::title = NULL;
|
|
||||||
|
|
||||||
cReplayControl::cReplayControl(bool PauseLive)
|
cReplayControl::cReplayControl(bool PauseLive)
|
||||||
:cDvbPlayerControl(fileName, PauseLive)
|
:cDvbPlayerControl(fileName, PauseLive)
|
||||||
@ -4460,7 +4432,7 @@ cReplayControl::~cReplayControl()
|
|||||||
|
|
||||||
void cReplayControl::Stop(void)
|
void cReplayControl::Stop(void)
|
||||||
{
|
{
|
||||||
if (Setup.DelTimeshiftRec && fileName) {
|
if (Setup.DelTimeshiftRec && *fileName) {
|
||||||
cRecordControl* rc = cRecordControls::GetRecordControl(fileName);
|
cRecordControl* rc = cRecordControls::GetRecordControl(fileName);
|
||||||
if (rc && rc->InstantId()) {
|
if (rc && rc->InstantId()) {
|
||||||
if (Active()) {
|
if (Active()) {
|
||||||
@ -4473,7 +4445,7 @@ void cReplayControl::Stop(void)
|
|||||||
Timers.SetModified();
|
Timers.SetModified();
|
||||||
}
|
}
|
||||||
cDvbPlayerControl::Stop();
|
cDvbPlayerControl::Stop();
|
||||||
cRecording *recording = Recordings.GetByName(fileName);;
|
cRecording *recording = Recordings.GetByName(fileName);
|
||||||
if (recording) {
|
if (recording) {
|
||||||
if (recording->Delete()) {
|
if (recording->Delete()) {
|
||||||
Recordings.DelByName(fileName);
|
Recordings.DelByName(fileName);
|
||||||
@ -4490,17 +4462,14 @@ void cReplayControl::Stop(void)
|
|||||||
cDvbPlayerControl::Stop();
|
cDvbPlayerControl::Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cReplayControl::SetRecording(const char *FileName, const char *Title)
|
void cReplayControl::SetRecording(const char *FileName)
|
||||||
{
|
{
|
||||||
free(fileName);
|
fileName = FileName;
|
||||||
free(title);
|
|
||||||
fileName = FileName ? strdup(FileName) : NULL;
|
|
||||||
title = Title ? strdup(Title) : NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *cReplayControl::NowReplaying(void)
|
const char *cReplayControl::NowReplaying(void)
|
||||||
{
|
{
|
||||||
return currentReplayControl ? fileName : NULL;
|
return currentReplayControl ? *fileName : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *cReplayControl::LastReplayed(void)
|
const char *cReplayControl::LastReplayed(void)
|
||||||
@ -4510,10 +4479,8 @@ const char *cReplayControl::LastReplayed(void)
|
|||||||
|
|
||||||
void cReplayControl::ClearLastReplayed(const char *FileName)
|
void cReplayControl::ClearLastReplayed(const char *FileName)
|
||||||
{
|
{
|
||||||
if (fileName && FileName && strcmp(fileName, FileName) == 0) {
|
if (*fileName && FileName && strcmp(fileName, FileName) == 0)
|
||||||
free(fileName);
|
|
||||||
fileName = NULL;
|
fileName = NULL;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cReplayControl::ShowTimed(int Seconds)
|
void cReplayControl::ShowTimed(int Seconds)
|
||||||
@ -4585,8 +4552,10 @@ bool cReplayControl::ShowProgress(bool Initial)
|
|||||||
visible = true;
|
visible = true;
|
||||||
}
|
}
|
||||||
if (Initial) {
|
if (Initial) {
|
||||||
if (title)
|
if (*fileName) {
|
||||||
displayReplay->SetTitle(title);
|
if (cRecording *Recording = Recordings.GetByName(fileName))
|
||||||
|
displayReplay->SetRecording(Recording);
|
||||||
|
}
|
||||||
lastCurrent = lastTotal = -1;
|
lastCurrent = lastTotal = -1;
|
||||||
}
|
}
|
||||||
if (Current != lastCurrent || Total != lastTotal) {
|
if (Current != lastCurrent || Total != lastTotal) {
|
||||||
@ -4758,7 +4727,7 @@ void cReplayControl::MarkMove(bool Forward)
|
|||||||
|
|
||||||
void cReplayControl::EditCut(void)
|
void cReplayControl::EditCut(void)
|
||||||
{
|
{
|
||||||
if (fileName) {
|
if (*fileName) {
|
||||||
Hide();
|
Hide();
|
||||||
if (!cCutter::Active()) {
|
if (!cCutter::Active()) {
|
||||||
if (!marks.Count())
|
if (!marks.Count())
|
||||||
@ -4800,6 +4769,13 @@ cOsdObject *cReplayControl::GetInfo(void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cRecording *cReplayControl::GetRecording(void)
|
||||||
|
{
|
||||||
|
if (const cRecording *Recording = Recordings.GetByName(LastReplayed()))
|
||||||
|
return Recording;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
eOSState cReplayControl::ProcessKey(eKeys Key)
|
eOSState cReplayControl::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
if (!Active())
|
if (!Active())
|
||||||
|
12
menu.h
12
menu.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.h 2.5 2012/03/08 13:11:40 kls Exp $
|
* $Id: menu.h 2.9 2012/05/12 11:48:04 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MENU_H
|
#ifndef __MENU_H
|
||||||
@ -196,7 +196,6 @@ private:
|
|||||||
int level;
|
int level;
|
||||||
int recordingsState;
|
int recordingsState;
|
||||||
int helpKeys;
|
int helpKeys;
|
||||||
bool SetFreeDiskDisplay(bool Force = false);
|
|
||||||
void SetHelpKeys(void);
|
void SetHelpKeys(void);
|
||||||
void Set(bool Refresh = false);
|
void Set(bool Refresh = false);
|
||||||
bool Open(bool OpenSubMenus = false);
|
bool Open(bool OpenSubMenus = false);
|
||||||
@ -243,6 +242,9 @@ public:
|
|||||||
static bool PauseLiveVideo(void);
|
static bool PauseLiveVideo(void);
|
||||||
static const char *GetInstantId(const char *LastInstantId);
|
static const char *GetInstantId(const char *LastInstantId);
|
||||||
static cRecordControl *GetRecordControl(const char *FileName);
|
static cRecordControl *GetRecordControl(const char *FileName);
|
||||||
|
static cRecordControl *GetRecordControl(const cTimer *Timer);
|
||||||
|
///< Returns the cRecordControl for the given Timer.
|
||||||
|
///< If there is no cRecordControl for Timer, NULL is returned.
|
||||||
static void Process(time_t t);
|
static void Process(time_t t);
|
||||||
static void ChannelDataModified(cChannel *Channel);
|
static void ChannelDataModified(cChannel *Channel);
|
||||||
static bool Active(void);
|
static bool Active(void);
|
||||||
@ -267,8 +269,7 @@ private:
|
|||||||
void TimeSearch(void);
|
void TimeSearch(void);
|
||||||
void ShowTimed(int Seconds = 0);
|
void ShowTimed(int Seconds = 0);
|
||||||
static cReplayControl *currentReplayControl;
|
static cReplayControl *currentReplayControl;
|
||||||
static char *fileName;
|
static cString fileName;
|
||||||
static char *title;
|
|
||||||
void ShowMode(void);
|
void ShowMode(void);
|
||||||
bool ShowProgress(bool Initial);
|
bool ShowProgress(bool Initial);
|
||||||
void MarkToggle(void);
|
void MarkToggle(void);
|
||||||
@ -281,11 +282,12 @@ public:
|
|||||||
virtual ~cReplayControl();
|
virtual ~cReplayControl();
|
||||||
void Stop(void);
|
void Stop(void);
|
||||||
virtual cOsdObject *GetInfo(void);
|
virtual cOsdObject *GetInfo(void);
|
||||||
|
virtual const cRecording *GetRecording(void);
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
virtual void Show(void);
|
virtual void Show(void);
|
||||||
virtual void Hide(void);
|
virtual void Hide(void);
|
||||||
bool Visible(void) { return visible; }
|
bool Visible(void) { return visible; }
|
||||||
static void SetRecording(const char *FileName, const char *Title);
|
static void SetRecording(const char *FileName);
|
||||||
static const char *NowReplaying(void);
|
static const char *NowReplaying(void);
|
||||||
static const char *LastReplayed(void);
|
static const char *LastReplayed(void);
|
||||||
static void ClearLastReplayed(const char *FileName);
|
static void ClearLastReplayed(const char *FileName);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menuitems.c 2.13 2012/03/13 11:21:57 kls Exp $
|
* $Id: menuitems.c 2.14 2012/04/08 11:20:37 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menuitems.h"
|
#include "menuitems.h"
|
||||||
@ -1126,6 +1126,7 @@ eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
|
|||||||
cMenuSetupPage::cMenuSetupPage(void)
|
cMenuSetupPage::cMenuSetupPage(void)
|
||||||
:cOsdMenu("", 33)
|
:cOsdMenu("", 33)
|
||||||
{
|
{
|
||||||
|
SetMenuCategory(mcSetup);
|
||||||
plugin = NULL;
|
plugin = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
38
osd.c
38
osd.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.c 2.27 2012/03/05 10:28:01 kls Exp $
|
* $Id: osd.c 2.31 2012/06/02 13:32:38 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
@ -40,6 +40,16 @@ tColor HsvToColor(double H, double S, double V)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tColor RgbShade(tColor Color, double Factor)
|
||||||
|
{
|
||||||
|
double f = fabs(constrain(Factor, -1.0, 1.0));
|
||||||
|
double w = Factor > 0 ? f * 0xFF : 0;
|
||||||
|
return (Color & 0xFF000000) |
|
||||||
|
(min(0xFF, int((1 - f) * ((Color >> 16) & 0xFF) + w + 0.5)) << 16) |
|
||||||
|
(min(0xFF, int((1 - f) * ((Color >> 8) & 0xFF) + w + 0.5)) << 8) |
|
||||||
|
(min(0xFF, int((1 - f) * ( Color & 0xFF) + w + 0.5)) );
|
||||||
|
}
|
||||||
|
|
||||||
#define USE_ALPHA_LUT
|
#define USE_ALPHA_LUT
|
||||||
#ifdef USE_ALPHA_LUT
|
#ifdef USE_ALPHA_LUT
|
||||||
// Alpha blending with lookup table (by Reinhard Nissl <rnissl@gmx.de>)
|
// Alpha blending with lookup table (by Reinhard Nissl <rnissl@gmx.de>)
|
||||||
@ -553,11 +563,15 @@ void cBitmap::DrawText(int x, int y, const char *s, tColor ColorFg, tColor Color
|
|||||||
if (Width || Height) {
|
if (Width || Height) {
|
||||||
limit = x + cw - x0;
|
limit = x + cw - x0;
|
||||||
if (Width) {
|
if (Width) {
|
||||||
if ((Alignment & taLeft) != 0)
|
if ((Alignment & taLeft) != 0) {
|
||||||
;
|
if ((Alignment & taBorder) != 0)
|
||||||
|
x += max(h / TEXT_ALIGN_BORDER, 1);
|
||||||
|
}
|
||||||
else if ((Alignment & taRight) != 0) {
|
else if ((Alignment & taRight) != 0) {
|
||||||
if (w < Width)
|
if (w < Width)
|
||||||
x += Width - w;
|
x += Width - w;
|
||||||
|
if ((Alignment & taBorder) != 0)
|
||||||
|
x -= max(h / TEXT_ALIGN_BORDER, 1);
|
||||||
}
|
}
|
||||||
else { // taCentered
|
else { // taCentered
|
||||||
if (w < Width)
|
if (w < Width)
|
||||||
@ -1280,11 +1294,15 @@ void cPixmapMemory::DrawText(const cPoint &Point, const char *s, tColor ColorFg,
|
|||||||
if (Width || Height) {
|
if (Width || Height) {
|
||||||
limit = x + cw;
|
limit = x + cw;
|
||||||
if (Width) {
|
if (Width) {
|
||||||
if ((Alignment & taLeft) != 0)
|
if ((Alignment & taLeft) != 0) {
|
||||||
;
|
if ((Alignment & taBorder) != 0)
|
||||||
|
x += max(h / TEXT_ALIGN_BORDER, 1);
|
||||||
|
}
|
||||||
else if ((Alignment & taRight) != 0) {
|
else if ((Alignment & taRight) != 0) {
|
||||||
if (w < Width)
|
if (w < Width)
|
||||||
x += Width - w;
|
x += Width - w;
|
||||||
|
if ((Alignment & taBorder) != 0)
|
||||||
|
x -= max(h / TEXT_ALIGN_BORDER, 1);
|
||||||
}
|
}
|
||||||
else { // taCentered
|
else { // taCentered
|
||||||
if (w < Width)
|
if (w < Width)
|
||||||
@ -1382,10 +1400,10 @@ void cPixmapMemory::DrawEllipse(const cRect &Rect, tColor Color, int Quadrants)
|
|||||||
case 0:
|
case 0:
|
||||||
case 6: DrawRectangle(cRect(cx - x, cy - y, 2 * x + 1, 1), Color); if (Quadrants == 6) break;
|
case 6: DrawRectangle(cRect(cx - x, cy - y, 2 * x + 1, 1), Color); if (Quadrants == 6) break;
|
||||||
case 8: DrawRectangle(cRect(cx - x, cy + y, 2 * x + 1, 1), Color); break;
|
case 8: DrawRectangle(cRect(cx - x, cy + y, 2 * x + 1, 1), Color); break;
|
||||||
case -1: DrawRectangle(cRect(cx + x, cy - y, x2 - x + 1, 1), Color); break;
|
case -1: DrawRectangle(cRect(cx + x, cy - y, rx - x + 1, 1), Color); break;
|
||||||
case -2: DrawRectangle(cRect(x1, cy - y, cx - x - x1 + 1, 1), Color); break;
|
case -2: DrawRectangle(cRect(x1, cy - y, cx - x - x1 + 1, 1), Color); break;
|
||||||
case -3: DrawRectangle(cRect(x1, cy + y, cx - x - x1 + 1, 1), Color); break;
|
case -3: DrawRectangle(cRect(x1, cy + y, cx - x - x1 + 1, 1), Color); break;
|
||||||
case -4: DrawRectangle(cRect(cx + x, cy + y, x2 - x + 1, 1), Color); break;
|
case -4: DrawRectangle(cRect(cx + x, cy + y, rx - x + 1, 1), Color); break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
y++;
|
y++;
|
||||||
@ -1417,10 +1435,10 @@ void cPixmapMemory::DrawEllipse(const cRect &Rect, tColor Color, int Quadrants)
|
|||||||
case 0:
|
case 0:
|
||||||
case 6: DrawRectangle(cRect(cx - x, cy - y, 2 * x + 1, 1), Color); if (Quadrants == 6) break;
|
case 6: DrawRectangle(cRect(cx - x, cy - y, 2 * x + 1, 1), Color); if (Quadrants == 6) break;
|
||||||
case 8: DrawRectangle(cRect(cx - x, cy + y, 2 * x + 1, 1), Color); break;
|
case 8: DrawRectangle(cRect(cx - x, cy + y, 2 * x + 1, 1), Color); break;
|
||||||
case -1: DrawRectangle(cRect(cx + x, cy - y, x2 - x + 1, 1), Color); break;
|
case -1: DrawRectangle(cRect(cx + x, cy - y, rx - x + 1, 1), Color); break;
|
||||||
case -2: DrawRectangle(cRect(x1, cy - y, cx - x - x1 + 1, 1), Color); break;
|
case -2: DrawRectangle(cRect(x1, cy - y, cx - x - x1 + 1, 1), Color); break;
|
||||||
case -3: DrawRectangle(cRect(x1, cy + y, cx - x - x1 + 1, 1), Color); break;
|
case -3: DrawRectangle(cRect(x1, cy + y, cx - x - x1 + 1, 1), Color); break;
|
||||||
case -4: DrawRectangle(cRect(cx + x, cy + y, x2 - x + 1, 1), Color); break;
|
case -4: DrawRectangle(cRect(cx + x, cy + y, rx - x + 1, 1), Color); break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
x++;
|
x++;
|
||||||
@ -1988,7 +2006,7 @@ void cOsdProvider::UpdateOsdSize(bool Force)
|
|||||||
Setup.FontSmlSize = int(round(Height * Setup.FontSmlSizeP));
|
Setup.FontSmlSize = int(round(Height * Setup.FontSmlSizeP));
|
||||||
cFont::SetFont(fontOsd, Setup.FontOsd, Setup.FontOsdSize);
|
cFont::SetFont(fontOsd, Setup.FontOsd, Setup.FontOsdSize);
|
||||||
cFont::SetFont(fontFix, Setup.FontFix, Setup.FontFixSize);
|
cFont::SetFont(fontFix, Setup.FontFix, Setup.FontFixSize);
|
||||||
cFont::SetFont(fontSml, Setup.FontSml, Setup.FontSmlSize);
|
cFont::SetFont(fontSml, Setup.FontSml, min(Setup.FontSmlSize, Setup.FontOsdSize));
|
||||||
oldWidth = Width;
|
oldWidth = Width;
|
||||||
oldHeight = Height;
|
oldHeight = Height;
|
||||||
oldAspect = Aspect;
|
oldAspect = Aspect;
|
||||||
|
12
osd.h
12
osd.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.h 2.15 2011/12/04 13:38:17 kls Exp $
|
* $Id: osd.h 2.17 2012/06/02 10:32:38 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSD_H
|
#ifndef __OSD_H
|
||||||
@ -25,6 +25,7 @@
|
|||||||
#define ALPHA_TRANSPARENT 0x00
|
#define ALPHA_TRANSPARENT 0x00
|
||||||
#define ALPHA_OPAQUE 0xFF
|
#define ALPHA_OPAQUE 0xFF
|
||||||
#define IS_OPAQUE(c) ((c >> 24) == ALPHA_OPAQUE)
|
#define IS_OPAQUE(c) ((c >> 24) == ALPHA_OPAQUE)
|
||||||
|
#define TEXT_ALIGN_BORDER 10 // fraction of the font height used for sizing border
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
//AARRGGBB
|
//AARRGGBB
|
||||||
@ -69,6 +70,14 @@ inline tColor RgbToColor(double R, double G, double B)
|
|||||||
return RgbToColor(uint8_t(0xFF * R), uint8_t(0xFF * G), uint8_t(0xFF * B));
|
return RgbToColor(uint8_t(0xFF * R), uint8_t(0xFF * G), uint8_t(0xFF * B));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tColor RgbShade(tColor Color, double Factor);
|
||||||
|
///< Returns a brighter (Factor > 0) or darker (Factor < 0) version
|
||||||
|
///< of the given Color.
|
||||||
|
///< If Factor is 0.0, the return value is the unchanged Color,
|
||||||
|
///< If Factor is 1.0, white is returned.
|
||||||
|
///< If Factor is -1.0, black is returned.
|
||||||
|
///< The alpha value of Color is returned unchanged.
|
||||||
|
|
||||||
tColor HsvToColor(double H, double S, double V);
|
tColor HsvToColor(double H, double S, double V);
|
||||||
///< Converts the given Hue (0..360), Saturation (0..1) and Value (0..1)
|
///< Converts the given Hue (0..360), Saturation (0..1) and Value (0..1)
|
||||||
///< to an RGB tColor value. The alpha value of the result is 0x00, so
|
///< to an RGB tColor value. The alpha value of the result is 0x00, so
|
||||||
@ -151,6 +160,7 @@ enum eTextAlignment { taCenter = 0x00,
|
|||||||
taRight = 0x02,
|
taRight = 0x02,
|
||||||
taTop = 0x04,
|
taTop = 0x04,
|
||||||
taBottom = 0x08,
|
taBottom = 0x08,
|
||||||
|
taBorder = 0x10, // keeps some distance from the left or right alignment edge
|
||||||
taDefault = taTop | taLeft
|
taDefault = taTop | taLeft
|
||||||
};
|
};
|
||||||
|
|
||||||
|
14
osdbase.c
14
osdbase.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.c 2.4 2012/03/02 15:49:57 kls Exp $
|
* $Id: osdbase.c 2.6 2012/04/23 09:41:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -72,14 +72,15 @@ void cOsdObject::Show(void)
|
|||||||
|
|
||||||
cSkinDisplayMenu *cOsdMenu::displayMenu = NULL;
|
cSkinDisplayMenu *cOsdMenu::displayMenu = NULL;
|
||||||
int cOsdMenu::displayMenuCount = 0;
|
int cOsdMenu::displayMenuCount = 0;
|
||||||
int cOsdMenu::displayMenuItems = 0;//XXX dynamic???
|
|
||||||
|
|
||||||
cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4)
|
cOsdMenu::cOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4)
|
||||||
{
|
{
|
||||||
isMenu = true;
|
isMenu = true;
|
||||||
digit = 0;
|
digit = 0;
|
||||||
hasHotkeys = false;
|
hasHotkeys = false;
|
||||||
|
displayMenuItems = 0;
|
||||||
title = NULL;
|
title = NULL;
|
||||||
|
menuCategory = mcUnknown;
|
||||||
SetTitle(Title);
|
SetTitle(Title);
|
||||||
SetCols(c0, c1, c2, c3, c4);
|
SetCols(c0, c1, c2, c3, c4);
|
||||||
first = 0;
|
first = 0;
|
||||||
@ -103,6 +104,11 @@ cOsdMenu::~cOsdMenu()
|
|||||||
DELETENULL(displayMenu);
|
DELETENULL(displayMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cOsdMenu::SetMenuCategory(eMenuCategory MenuCategory)
|
||||||
|
{
|
||||||
|
menuCategory = MenuCategory;
|
||||||
|
}
|
||||||
|
|
||||||
void cOsdMenu::SetDisplayMenu(void)
|
void cOsdMenu::SetDisplayMenu(void)
|
||||||
{
|
{
|
||||||
if (displayMenu) {
|
if (displayMenu) {
|
||||||
@ -110,7 +116,6 @@ void cOsdMenu::SetDisplayMenu(void)
|
|||||||
delete displayMenu;
|
delete displayMenu;
|
||||||
}
|
}
|
||||||
displayMenu = Skins.Current()->DisplayMenu();
|
displayMenu = Skins.Current()->DisplayMenu();
|
||||||
displayMenuItems = displayMenu->MaxItems();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *cOsdMenu::hk(const char *s)
|
const char *cOsdMenu::hk(const char *s)
|
||||||
@ -212,6 +217,9 @@ void cOsdMenu::Display(void)
|
|||||||
displayMenu->SetMessage(mtStatus, NULL);
|
displayMenu->SetMessage(mtStatus, NULL);
|
||||||
displayMenu->Clear();
|
displayMenu->Clear();
|
||||||
cStatus::MsgOsdClear();
|
cStatus::MsgOsdClear();
|
||||||
|
if (menuCategory != displayMenu->MenuCategory())
|
||||||
|
displayMenu->SetMenuCategory(menuCategory);
|
||||||
|
displayMenuItems = displayMenu->MaxItems();
|
||||||
displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX
|
displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX
|
||||||
displayMenu->SetTitle(title);
|
displayMenu->SetTitle(title);
|
||||||
cStatus::MsgOsdTitle(title);
|
cStatus::MsgOsdTitle(title);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.h 2.2 2012/03/02 15:49:57 kls Exp $
|
* $Id: osdbase.h 2.4 2012/04/23 09:40:07 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSDBASE_H
|
#ifndef __OSDBASE_H
|
||||||
@ -86,10 +86,11 @@ class cOsdMenu : public cOsdObject, public cList<cOsdItem> {
|
|||||||
private:
|
private:
|
||||||
static cSkinDisplayMenu *displayMenu;
|
static cSkinDisplayMenu *displayMenu;
|
||||||
static int displayMenuCount;
|
static int displayMenuCount;
|
||||||
static int displayMenuItems;
|
int displayMenuItems;
|
||||||
char *title;
|
char *title;
|
||||||
int cols[cSkinDisplayMenu::MaxTabs];
|
int cols[cSkinDisplayMenu::MaxTabs];
|
||||||
int first, current, marked;
|
int first, current, marked;
|
||||||
|
eMenuCategory menuCategory;
|
||||||
cOsdMenu *subMenu;
|
cOsdMenu *subMenu;
|
||||||
const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
|
const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
|
||||||
bool helpDisplayed;
|
bool helpDisplayed;
|
||||||
@ -128,6 +129,7 @@ public:
|
|||||||
cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
|
cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
|
||||||
virtual ~cOsdMenu();
|
virtual ~cOsdMenu();
|
||||||
virtual bool NeedsFastResponse(void) { return subMenu ? subMenu->NeedsFastResponse() : cOsdObject::NeedsFastResponse(); }
|
virtual bool NeedsFastResponse(void) { return subMenu ? subMenu->NeedsFastResponse() : cOsdObject::NeedsFastResponse(); }
|
||||||
|
void SetMenuCategory(eMenuCategory MenuCategory);
|
||||||
int Current(void) const { return current; }
|
int Current(void) const { return current; }
|
||||||
void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
|
void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
|
||||||
void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
|
void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
|
||||||
|
68
pat.c
68
pat.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: pat.c 2.17 2012/03/02 10:56:45 kls Exp $
|
* $Id: pat.c 2.18 2012/04/15 09:54:53 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pat.h"
|
#include "pat.h"
|
||||||
@ -456,37 +456,47 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x80: // STREAMTYPE_USER_PRIVATE - DigiCipher II VIDEO (ANSI/SCTE 57)
|
case 0x80: // STREAMTYPE_USER_PRIVATE
|
||||||
Vpid = esPid;
|
if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // DigiCipher II VIDEO (ANSI/SCTE 57)
|
||||||
Ppid = pmt.getPCRPid();
|
Vpid = esPid;
|
||||||
Vtype = 0x02; // compression based upon MPEG-2
|
Ppid = pmt.getPCRPid();
|
||||||
ProcessCaDescriptors = true;
|
Vtype = 0x02; // compression based upon MPEG-2
|
||||||
break;
|
ProcessCaDescriptors = true;
|
||||||
case 0x81: // STREAMTYPE_USER_PRIVATE - ATSC A/53 AUDIO (ANSI/SCTE 57)
|
break;
|
||||||
{
|
}
|
||||||
char lang[MAXLANGCODE1] = { 0 };
|
// fall through
|
||||||
SI::Descriptor *d;
|
case 0x81: // STREAMTYPE_USER_PRIVATE
|
||||||
for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) {
|
if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // ATSC A/53 AUDIO (ANSI/SCTE 57)
|
||||||
switch (d->getDescriptorTag()) {
|
char lang[MAXLANGCODE1] = { 0 };
|
||||||
case SI::ISO639LanguageDescriptorTag: {
|
SI::Descriptor *d;
|
||||||
SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
|
for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) {
|
||||||
strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1);
|
switch (d->getDescriptorTag()) {
|
||||||
}
|
case SI::ISO639LanguageDescriptorTag: {
|
||||||
break;
|
SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d;
|
||||||
default: ;
|
strn0cpy(lang, I18nNormalizeLanguageCode(ld->languageCode), MAXLANGCODE1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
delete d;
|
||||||
}
|
}
|
||||||
delete d;
|
if (NumDpids < MAXDPIDS) {
|
||||||
|
Dpids[NumDpids] = esPid;
|
||||||
|
Dtypes[NumDpids] = SI::AC3DescriptorTag;
|
||||||
|
strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1);
|
||||||
|
NumDpids++;
|
||||||
|
}
|
||||||
|
ProcessCaDescriptors = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (NumDpids < MAXDPIDS) {
|
// fall through
|
||||||
Dpids[NumDpids] = esPid;
|
case 0x82: // STREAMTYPE_USER_PRIVATE
|
||||||
Dtypes[NumDpids] = SI::AC3DescriptorTag;
|
if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // STANDARD SUBTITLE (ANSI/SCTE 27)
|
||||||
strn0cpy(DLangs[NumDpids], lang, MAXLANGCODE1);
|
//TODO
|
||||||
NumDpids++;
|
break;
|
||||||
}
|
}
|
||||||
ProcessCaDescriptors = true;
|
// fall through
|
||||||
}
|
case 0x83 ... 0xFF: // STREAMTYPE_USER_PRIVATE
|
||||||
break;
|
|
||||||
case 0x82 ... 0xFF: // STREAMTYPE_USER_PRIVATE
|
|
||||||
{
|
{
|
||||||
char lang[MAXLANGCODE1] = { 0 };
|
char lang[MAXLANGCODE1] = { 0 };
|
||||||
bool IsAc3 = false;
|
bool IsAc3 = false;
|
||||||
|
16
player.c
16
player.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: player.c 2.0 2007/07/20 15:25:24 kls Exp $
|
* $Id: player.c 2.2 2012/04/28 11:52:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
@ -60,10 +60,20 @@ cOsdObject *cControl::GetInfo(void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cControl *cControl::Control(void)
|
const cRecording *cControl::GetRecording(void)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
cString cControl::GetHeader(void)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
cControl *cControl::Control(bool Hidden)
|
||||||
{
|
{
|
||||||
cMutexLock MutexLock(&mutex);
|
cMutexLock MutexLock(&mutex);
|
||||||
return (control && !control->hidden) ? control : NULL;
|
return (control && (!control->hidden || Hidden)) ? control : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cControl::Launch(cControl *Control)
|
void cControl::Launch(cControl *Control)
|
||||||
|
19
player.h
19
player.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: player.h 2.4 2009/03/08 12:29:10 kls Exp $
|
* $Id: player.h 2.6 2012/04/28 13:04:17 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __PLAYER_H
|
#ifndef __PLAYER_H
|
||||||
@ -86,13 +86,28 @@ public:
|
|||||||
virtual ~cControl();
|
virtual ~cControl();
|
||||||
virtual void Hide(void) = 0;
|
virtual void Hide(void) = 0;
|
||||||
virtual cOsdObject *GetInfo(void);
|
virtual cOsdObject *GetInfo(void);
|
||||||
|
///< Returns an OSD object that displays information about the currently
|
||||||
|
///< played programme. If no such information is available, NULL will be
|
||||||
|
///< returned.
|
||||||
|
virtual const cRecording *GetRecording(void);
|
||||||
|
///< Returns the cRecording that is currently being replayed, or NULL if
|
||||||
|
///< this player is not playing a cRecording.
|
||||||
|
virtual cString GetHeader(void);
|
||||||
|
///< This can be used by players that don't play a cRecording, but rather
|
||||||
|
///< do something completely different. The resulting string may be used by
|
||||||
|
///< skins as a last resort, in case they want to display the state of the
|
||||||
|
///< current player. The return value is expected to be a short, single line
|
||||||
|
///< string. The default implementation returns an empty string.
|
||||||
double FramesPerSecond(void) { return player->FramesPerSecond(); }
|
double FramesPerSecond(void) { return player->FramesPerSecond(); }
|
||||||
bool GetIndex(int &Current, int &Total, bool SnapToIFrame = false) { return player->GetIndex(Current, Total, SnapToIFrame); }
|
bool GetIndex(int &Current, int &Total, bool SnapToIFrame = false) { return player->GetIndex(Current, Total, SnapToIFrame); }
|
||||||
bool GetReplayMode(bool &Play, bool &Forward, int &Speed) { return player->GetReplayMode(Play, Forward, Speed); }
|
bool GetReplayMode(bool &Play, bool &Forward, int &Speed) { return player->GetReplayMode(Play, Forward, Speed); }
|
||||||
static void Launch(cControl *Control);
|
static void Launch(cControl *Control);
|
||||||
static void Attach(void);
|
static void Attach(void);
|
||||||
static void Shutdown(void);
|
static void Shutdown(void);
|
||||||
static cControl *Control(void);
|
static cControl *Control(bool Hidden = false);
|
||||||
|
///< Returns the current replay control (if any) in case it is currently
|
||||||
|
///< visible. If Hidden is true, the control will be returned even if it is
|
||||||
|
///< currently hidden.
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__PLAYER_H
|
#endif //__PLAYER_H
|
||||||
|
38
po/ar.po
38
po/ar.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.0\n"
|
"Project-Id-Version: VDR 1.7.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
||||||
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
||||||
"Language-Team: Arabic <ar@li.org>\n"
|
"Language-Team: Arabic <ar@li.org>\n"
|
||||||
@ -517,12 +517,6 @@ msgstr "المستخدم 8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "المستخدم 9"
|
msgstr "المستخدم 9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "القرص الصلب"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "مساحة حرة"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "غير مشفر"
|
msgstr "غير مشفر"
|
||||||
|
|
||||||
@ -944,6 +938,9 @@ msgstr "الترجمة"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "كرت الستالايت الاولى"
|
msgstr "كرت الستالايت الاولى"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "نوع الفيديو "
|
msgstr "نوع الفيديو "
|
||||||
|
|
||||||
@ -1174,9 +1171,6 @@ msgstr " ايقاف التسجيل "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "جدولة"
|
msgstr "جدولة"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " ايقاف الاعادة"
|
msgstr " ايقاف الاعادة"
|
||||||
@ -1307,6 +1301,24 @@ msgstr "الصوت "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR تقليدى "
|
msgstr "VDR تقليدى "
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG شاشة "
|
msgstr "ST:TNG شاشة "
|
||||||
|
|
||||||
@ -1370,3 +1382,9 @@ msgstr "اضغط اى زر لالغاء اعادة التشغيل"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "البرنامج سيقوم بالاغلاق بعد%s دقيقة "
|
msgstr "البرنامج سيقوم بالاغلاق بعد%s دقيقة "
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "القرص الصلب"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "مساحة حرة"
|
||||||
|
38
po/ca_ES.po
38
po/ca_ES.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
||||||
@ -512,12 +512,6 @@ msgstr "Usuari 8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Usuari 9"
|
msgstr "Usuari 9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disc"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "lliure"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "No codificat"
|
msgstr "No codificat"
|
||||||
|
|
||||||
@ -926,6 +920,9 @@ msgstr "Subt
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Tarja DVB primària"
|
msgstr "Tarja DVB primària"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Format del vídeo"
|
msgstr "Format del vídeo"
|
||||||
|
|
||||||
@ -1150,9 +1147,6 @@ msgstr " Aturar la gravaci
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Guia de Programació"
|
msgstr "Guia de Programació"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Aturar la reproducció"
|
msgstr " Aturar la reproducció"
|
||||||
@ -1282,6 +1276,24 @@ msgstr "Volum "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR clasico"
|
msgstr "VDR clasico"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Quadres ST:TNG"
|
msgstr "Quadres ST:TNG"
|
||||||
|
|
||||||
@ -1344,3 +1356,9 @@ msgstr "Prem qualsevol tecla per cancel
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR s'apagarà en %s minuts"
|
msgstr "VDR s'apagarà en %s minuts"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disc"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "lliure"
|
||||||
|
38
po/cs_CZ.po
38
po/cs_CZ.po
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.14\n"
|
"Project-Id-Version: VDR 1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
||||||
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
||||||
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
||||||
@ -511,12 +511,6 @@ msgstr "Uživatel8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Uživatel9"
|
msgstr "Uživatel9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "volno"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "volný"
|
msgstr "volný"
|
||||||
|
|
||||||
@ -925,6 +919,9 @@ msgstr "Titulky"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primární DVB zařízení"
|
msgstr "Primární DVB zařízení"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Formát videa"
|
msgstr "Formát videa"
|
||||||
|
|
||||||
@ -1149,9 +1146,6 @@ msgstr " Zastavit nahrávání "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Program (EPG)"
|
msgstr "Program (EPG)"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Zastavit přehrávání"
|
msgstr " Zastavit přehrávání"
|
||||||
@ -1281,6 +1275,24 @@ msgstr "Hlasitost "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasické VDR"
|
msgstr "Klasické VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG konzola"
|
msgstr "ST:TNG konzola"
|
||||||
|
|
||||||
@ -1343,3 +1355,9 @@ msgstr "Jakákoliv klávesa zruší restart"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR se vypne za %s minut"
|
msgstr "VDR se vypne za %s minut"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "volno"
|
||||||
|
38
po/da_DK.po
38
po/da_DK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
||||||
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "Bruger8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Bruger9"
|
msgstr "Bruger9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "fri"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Free To Air"
|
msgstr "Free To Air"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Undertekster"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primær DVB enhed"
|
msgstr "Primær DVB enhed"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video format"
|
msgstr "Video format"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr " Stop optagelse "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programoversigt"
|
msgstr "Programoversigt"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Stop afspilning"
|
msgstr " Stop afspilning"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Lydstyrke "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klassisk VDR"
|
msgstr "Klassisk VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG konsol"
|
msgstr "ST:TNG konsol"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "Tryk vilk
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR slukker om %s minutter"
|
msgstr "VDR slukker om %s minutter"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "fri"
|
||||||
|
38
po/de_DE.po
38
po/de_DE.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
||||||
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
||||||
"Language-Team: German <vdr@linuxtv.org>\n"
|
"Language-Team: German <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "Benutzer8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Benutzer9"
|
msgstr "Benutzer9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "frei"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "frei empfangbar"
|
msgstr "frei empfangbar"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Untertitel"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primäres DVB-Interface"
|
msgstr "Primäres DVB-Interface"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr "Standardkonformität"
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Videoformat"
|
msgstr "Videoformat"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr " Aufzeichnung beenden "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programm"
|
msgstr "Programm"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Wiedergabe beenden"
|
msgstr " Wiedergabe beenden"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Lautst
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klassischer VDR"
|
msgstr "Klassischer VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr "PLATTE"
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr "LAST"
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr "TIMER"
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr "EMPFÄNGER"
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr "LIVE"
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr "WIEDERGABE"
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG-Konsolen"
|
msgstr "ST:TNG-Konsolen"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "Taste dr
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR wird in %s Minuten abgeschaltet"
|
msgstr "VDR wird in %s Minuten abgeschaltet"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "frei"
|
||||||
|
38
po/el_GR.po
38
po/el_GR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
||||||
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr ""
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Äßóêïò"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "Åëåýèåñïò"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr ""
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Êýñéá DVB êÜñôá"
|
msgstr "Êýñéá DVB êÜñôá"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "ÌïñöÞ ïèüíçò"
|
msgstr "ÌïñöÞ ïèüíçò"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Ðñüãñáììá"
|
msgstr "Ðñüãñáììá"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " ÔÝëïò áíáðáñáãùãÞò"
|
msgstr " ÔÝëïò áíáðáñáãùãÞò"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Êëáóéêü VDR"
|
msgstr "Êëáóéêü VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ÌïñöÝò ST:TNG"
|
msgstr "ÌïñöÝò ST:TNG"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr ""
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Äßóêïò"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "Åëåýèåñïò"
|
||||||
|
38
po/es_ES.po
38
po/es_ES.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr "Usuario 8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Usuario 9"
|
msgstr "Usuario 9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disco"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "libre"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "en abierto"
|
msgstr "en abierto"
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr "Subt
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Interfaz DVB primario"
|
msgstr "Interfaz DVB primario"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Formato de vídeo"
|
msgstr "Formato de vídeo"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr " Parar grabaci
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Guía de Programación"
|
msgstr "Guía de Programación"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Parar reprodución"
|
msgstr " Parar reprodución"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "Volumen "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR clásico"
|
msgstr "VDR clásico"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Paneles ST:TNG"
|
msgstr "Paneles ST:TNG"
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr "Pulse cualquier tecla para cancelar reinicio"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR se apagará en %s minutos"
|
msgstr "VDR se apagará en %s minutos"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disco"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "libre"
|
||||||
|
38
po/et_EE.po
38
po/et_EE.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
||||||
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "Lisaklahv8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Lisaklahv9"
|
msgstr "Lisaklahv9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Ketas"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "vaba"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "FTA"
|
msgstr "FTA"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Subtiitrid"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Esmane DVB seade"
|
msgstr "Esmane DVB seade"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "TV külgsuhe"
|
msgstr "TV külgsuhe"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr " Lõpetada salvestamine "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Kava"
|
msgstr "Kava"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Lõpetada taasesitamine"
|
msgstr " Lõpetada taasesitamine"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Helitugevus "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Classic VDR"
|
msgstr "Classic VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Panels"
|
msgstr "ST:TNG Panels"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "Restardi katkestamiseks vajuta suvalist klahvi"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR lülitub välja %s minuti pärast"
|
msgstr "VDR lülitub välja %s minuti pärast"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Ketas"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "vaba"
|
||||||
|
38
po/fi_FI.po
38
po/fi_FI.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
||||||
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
||||||
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
||||||
@ -512,12 +512,6 @@ msgstr "Lisänäppäin 8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Lisänäppäin 9"
|
msgstr "Lisänäppäin 9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Levy"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "vapaana"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "vapaa"
|
msgstr "vapaa"
|
||||||
|
|
||||||
@ -926,6 +920,9 @@ msgstr "Tekstitys"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Ensisijainen DVB-sovitin"
|
msgstr "Ensisijainen DVB-sovitin"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr "Noudatettava standardi"
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Kuvasuhde"
|
msgstr "Kuvasuhde"
|
||||||
|
|
||||||
@ -1150,9 +1147,6 @@ msgstr " Lopeta tallennus "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Ohjelmisto"
|
msgstr "Ohjelmisto"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Lopeta toisto"
|
msgstr " Lopeta toisto"
|
||||||
@ -1282,6 +1276,24 @@ msgstr "Äänenvoimakkuus "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klassinen VDR"
|
msgstr "Klassinen VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG konsoli"
|
msgstr "ST:TNG konsoli"
|
||||||
|
|
||||||
@ -1344,3 +1356,9 @@ msgstr "Peru uudelleenkäynnistys painamalla mitä tahansa näppäintä"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR sammuu %s minuutin kuluttua"
|
msgstr "VDR sammuu %s minuutin kuluttua"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Levy"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "vapaana"
|
||||||
|
38
po/fr_FR.po
38
po/fr_FR.po
@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
||||||
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
||||||
"Language-Team: French <vdr@linuxtv.org>\n"
|
"Language-Team: French <vdr@linuxtv.org>\n"
|
||||||
@ -515,12 +515,6 @@ msgstr "Utilisateur8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Utilisateur9"
|
msgstr "Utilisateur9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disque"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "restant"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "En clair"
|
msgstr "En clair"
|
||||||
|
|
||||||
@ -929,6 +923,9 @@ msgstr "Sous-titres"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Carte DVB primaire"
|
msgstr "Carte DVB primaire"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Format vidéo"
|
msgstr "Format vidéo"
|
||||||
|
|
||||||
@ -1153,9 +1150,6 @@ msgstr " Arr
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programmes"
|
msgstr "Programmes"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Arrêter la lecture"
|
msgstr " Arrêter la lecture"
|
||||||
@ -1285,6 +1279,24 @@ msgstr "Volume "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR classique"
|
msgstr "VDR classique"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Consoles ST:TNG"
|
msgstr "Consoles ST:TNG"
|
||||||
|
|
||||||
@ -1347,3 +1359,9 @@ msgstr "Appuyer sur une touche pour annuler le red
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR s'arrêtera dans %s minutes"
|
msgstr "VDR s'arrêtera dans %s minutes"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disque"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "restant"
|
||||||
|
38
po/hr_HR.po
38
po/hr_HR.po
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
||||||
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
||||||
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
||||||
@ -511,12 +511,6 @@ msgstr "Korisnik8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Korisnik9"
|
msgstr "Korisnik9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "slobodno"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Slobodno"
|
msgstr "Slobodno"
|
||||||
|
|
||||||
@ -925,6 +919,9 @@ msgstr "Titlovi"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primarni DVB ureðaj"
|
msgstr "Primarni DVB ureðaj"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video format"
|
msgstr "Video format"
|
||||||
|
|
||||||
@ -1149,9 +1146,6 @@ msgstr " Prekini snimanje "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Raspored"
|
msgstr "Raspored"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Prekini reprodukciju"
|
msgstr " Prekini reprodukciju"
|
||||||
@ -1281,6 +1275,24 @@ msgstr "Glasno
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasièni VDR"
|
msgstr "Klasièni VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Panele"
|
msgstr "ST:TNG Panele"
|
||||||
|
|
||||||
@ -1343,3 +1355,9 @@ msgstr "Pritisnite jednu tipku za poni
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR æe se iskljuèiti za %s minuta"
|
msgstr "VDR æe se iskljuèiti za %s minuta"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "slobodno"
|
||||||
|
38
po/hu_HU.po
38
po/hu_HU.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2012-01-02 11:54+0200\n"
|
"PO-Revision-Date: 2012-01-02 11:54+0200\n"
|
||||||
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
||||||
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
||||||
@ -512,12 +512,6 @@ msgstr "Felhaszn
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Felhasználó9"
|
msgstr "Felhasználó9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Lemez"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "szabad"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Kódolatlan"
|
msgstr "Kódolatlan"
|
||||||
|
|
||||||
@ -926,6 +920,9 @@ msgstr "Feliratok"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Elsõ DVB interface"
|
msgstr "Elsõ DVB interface"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video formátum"
|
msgstr "Video formátum"
|
||||||
|
|
||||||
@ -1151,9 +1148,6 @@ msgstr " Felv
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Mûsorújság"
|
msgstr "Mûsorújság"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Lejátszást befejzni"
|
msgstr " Lejátszást befejzni"
|
||||||
@ -1283,6 +1277,24 @@ msgstr "Hanger
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasszikus VDR"
|
msgstr "Klasszikus VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Konzol"
|
msgstr "ST:TNG Konzol"
|
||||||
|
|
||||||
@ -1345,3 +1357,9 @@ msgstr "Nyomj egy gombot az
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "A VDR leáll %s perc múlva"
|
msgstr "A VDR leáll %s perc múlva"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Lemez"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "szabad"
|
||||||
|
38
po/it_IT.po
38
po/it_IT.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2012-03-19 01:08+0100\n"
|
"PO-Revision-Date: 2012-03-19 01:08+0100\n"
|
||||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||||
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
||||||
@ -516,12 +516,6 @@ msgstr "Utente8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Utente9"
|
msgstr "Utente9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disco"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "disponibili"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "in chiaro"
|
msgstr "in chiaro"
|
||||||
|
|
||||||
@ -930,6 +924,9 @@ msgstr "Sottotitoli"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Scheda DVB primaria"
|
msgstr "Scheda DVB primaria"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Formato video"
|
msgstr "Formato video"
|
||||||
|
|
||||||
@ -1154,9 +1151,6 @@ msgstr " Ferma registrazione "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programmi"
|
msgstr "Programmi"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Ferma riproduzione"
|
msgstr " Ferma riproduzione"
|
||||||
@ -1286,6 +1280,24 @@ msgstr "Volume "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR Classico"
|
msgstr "VDR Classico"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Consolle ST:TNG"
|
msgstr "Consolle ST:TNG"
|
||||||
|
|
||||||
@ -1348,3 +1360,9 @@ msgstr "Premi un tasto per annullare il riavvio"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR si spegnerà tra %s minuti"
|
msgstr "VDR si spegnerà tra %s minuti"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disco"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "disponibili"
|
||||||
|
38
po/lt_LT.po
38
po/lt_LT.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
||||||
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
||||||
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "Vartotojas8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Vartotojas9"
|
msgstr "Vartotojas9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Diskas"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "laisva"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Nekoduotas kanalas"
|
msgstr "Nekoduotas kanalas"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Subtitrai"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Pirminiė DVB įvestis"
|
msgstr "Pirminiė DVB įvestis"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video formatas"
|
msgstr "Video formatas"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr " Sustabdyti įrašinėjimą "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programa"
|
msgstr "Programa"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Sustabdyti kartojimą"
|
msgstr " Sustabdyti kartojimą"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Garsas "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasikinis VDR"
|
msgstr "Klasikinis VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Skydeliai"
|
msgstr "ST:TNG Skydeliai"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "Paspauskit bet kurį mygtuką kad sustabdytumėte perkrovimą"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR išsijungs per %s minutes"
|
msgstr "VDR išsijungs per %s minutes"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Diskas"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "laisva"
|
||||||
|
38
po/mk_MK.po
38
po/mk_MK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR-1.7.14\n"
|
"Project-Id-Version: VDR-1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
||||||
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
||||||
"Language-Team: Macedonian <en@li.org>\n"
|
"Language-Team: Macedonian <en@li.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr "Корисник8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Корисник9"
|
msgstr "Корисник9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Диск"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "слободен"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Слободно"
|
msgstr "Слободно"
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr "Титл"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Примарен DVB уред"
|
msgstr "Примарен DVB уред"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Видео формат"
|
msgstr "Видео формат"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr " Запри снимање "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Распоред"
|
msgstr "Распоред"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Запри пуштање"
|
msgstr " Запри пуштање"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "Глас"
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Класичен VDR"
|
msgstr "Класичен VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Панели"
|
msgstr "ST:TNG Панели"
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr "Притиснете копче за откажување на рест
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR ќе се исклучи за %s минути"
|
msgstr "VDR ќе се исклучи за %s минути"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Диск"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "слободен"
|
||||||
|
38
po/nl_NL.po
38
po/nl_NL.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
||||||
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
||||||
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
||||||
@ -513,12 +513,6 @@ msgstr "Gebruiker8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Gebruiker9"
|
msgstr "Gebruiker9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Schijf"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "vrij"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Vrij te ontvangen"
|
msgstr "Vrij te ontvangen"
|
||||||
|
|
||||||
@ -927,6 +921,9 @@ msgstr "Ondertiteling"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Eerste DVB kaart"
|
msgstr "Eerste DVB kaart"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Videoformaat"
|
msgstr "Videoformaat"
|
||||||
|
|
||||||
@ -1151,9 +1148,6 @@ msgstr " Stop opnemen "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programmagids"
|
msgstr "Programmagids"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Stop afspelen"
|
msgstr " Stop afspelen"
|
||||||
@ -1283,6 +1277,24 @@ msgstr "Volume "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR Klassiek"
|
msgstr "VDR Klassiek"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Consoles"
|
msgstr "ST:TNG Consoles"
|
||||||
|
|
||||||
@ -1345,3 +1357,9 @@ msgstr "Druk een willekeurige toets om herstarten af te breken"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR zal na %s minuten uitschakelen"
|
msgstr "VDR zal na %s minuten uitschakelen"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Schijf"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "vrij"
|
||||||
|
38
po/nn_NO.po
38
po/nn_NO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
||||||
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr ""
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "ledig"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr ""
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Hoved DVB-enhet"
|
msgstr "Hoved DVB-enhet"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "TV-Format"
|
msgstr "TV-Format"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr " Stopp opptak fra "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programmer"
|
msgstr "Programmer"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Stopp avspilling"
|
msgstr " Stopp avspilling"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "Volum "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr ""
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "ledig"
|
||||||
|
38
po/pl_PL.po
38
po/pl_PL.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
||||||
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
||||||
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr "U
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "U¿ytkownik 9"
|
msgstr "U¿ytkownik 9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Dysk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "wolnego"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "nieszyfrowany"
|
msgstr "nieszyfrowany"
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr "Napisy"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Pierwszy interfejs DVB"
|
msgstr "Pierwszy interfejs DVB"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Format obrazu"
|
msgstr "Format obrazu"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr " Zatrzymaj nagrywanie "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Program"
|
msgstr "Program"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Zatrzymaj odtwarzanie"
|
msgstr " Zatrzymaj odtwarzanie"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "G
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasyczny VDR"
|
msgstr "Klasyczny VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Panel ST:TNG"
|
msgstr "Panel ST:TNG"
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr "Naci
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR zostanie wy³±czony za %s minut"
|
msgstr "VDR zostanie wy³±czony za %s minut"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Dysk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "wolnego"
|
||||||
|
38
po/pt_PT.po
38
po/pt_PT.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.15\n"
|
"Project-Id-Version: VDR 1.7.15\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
||||||
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
||||||
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr "Defini
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Definição9"
|
msgstr "Definição9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disco"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "livre"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "FTA"
|
msgstr "FTA"
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr "Legendas"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Placa DVB primária"
|
msgstr "Placa DVB primária"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Formato de vídeo"
|
msgstr "Formato de vídeo"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr " Parar grava
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Programação"
|
msgstr "Programação"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Parar reprodução"
|
msgstr " Parar reprodução"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "Volume "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR Clássico"
|
msgstr "VDR Clássico"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Consola ST:TNG"
|
msgstr "Consola ST:TNG"
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr "Pressione qualquer tecla para cancelar o reinicio"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "O VDR vai desligar daqui a %s minutos"
|
msgstr "O VDR vai desligar daqui a %s minutos"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disco"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "livre"
|
||||||
|
38
po/ro_RO.po
38
po/ro_RO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.12\n"
|
"Project-Id-Version: VDR 1.7.12\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2011-03-10 23:52+0100\n"
|
"PO-Revision-Date: 2011-03-10 23:52+0100\n"
|
||||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||||
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
||||||
@ -512,12 +512,6 @@ msgstr "Utilizator8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Utilizator9"
|
msgstr "Utilizator9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disc"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "liber"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "FTA (necriptat)"
|
msgstr "FTA (necriptat)"
|
||||||
|
|
||||||
@ -926,6 +920,9 @@ msgstr "Subtitrare"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Dispozitiv DVB primar"
|
msgstr "Dispozitiv DVB primar"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Format video"
|
msgstr "Format video"
|
||||||
|
|
||||||
@ -1150,9 +1147,6 @@ msgstr " Opre
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Program (EPG)"
|
msgstr "Program (EPG)"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Opreºte redarea"
|
msgstr " Opreºte redarea"
|
||||||
@ -1282,6 +1276,24 @@ msgstr "Volum "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "VDR clasic"
|
msgstr "VDR clasic"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "Cons. ST:TNG"
|
msgstr "Cons. ST:TNG"
|
||||||
|
|
||||||
@ -1344,3 +1356,9 @@ msgstr "Ap
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR se va închide în %s minute"
|
msgstr "VDR se va închide în %s minute"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disc"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "liber"
|
||||||
|
38
po/ru_RU.po
38
po/ru_RU.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
||||||
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
||||||
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr "
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "¿ÞÛì×ÞÒÐâÕÛì9"
|
msgstr "¿ÞÛì×ÞÒÐâÕÛì9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "´ØáÚ"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "áÒÞÑÞÔÝÞ"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "FTA (ÝÕ×ÐÚÞÔØàÞÒÐÝÞ)"
|
msgstr "FTA (ÝÕ×ÐÚÞÔØàÞÒÐÝÞ)"
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr "
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "¾áÝÞÒÝÞÕ DVB-ãáâàÞÙáâÒÞ"
|
msgstr "¾áÝÞÒÝÞÕ DVB-ãáâàÞÙáâÒÞ"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "ÄÞàÜÐâ ÒØÔÕÞ"
|
msgstr "ÄÞàÜÐâ ÒØÔÕÞ"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "ÂÕÛÕÓØÔ"
|
msgstr "ÂÕÛÕÓØÔ"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " ¿àÕÚàÐâØâì ÒÞáßàÞØ×ÒÕÔÕÝØÕ"
|
msgstr " ¿àÕÚàÐâØâì ÒÞáßàÞØ×ÒÕÔÕÝØÕ"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "ºÛÐááØçÕáÚØÙ"
|
msgstr "ºÛÐááØçÕáÚØÙ"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG ßÐÝÕÛØ"
|
msgstr "ST:TNG ßÐÝÕÛØ"
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr "
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR ÒëÚÛîçØâáï çÕàÕ× %s ÜØÝãâ"
|
msgstr "VDR ÒëÚÛîçØâáï çÕàÕ× %s ÜØÝãâ"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "´ØáÚ"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "áÒÞÑÞÔÝÞ"
|
||||||
|
38
po/sk_SK.po
38
po/sk_SK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
||||||
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
||||||
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "U
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "U¾ívateµ9"
|
msgstr "U¾ívateµ9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "volne"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "volne ¹íriteµný"
|
msgstr "volne ¹íriteµný"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Titulky"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Hlavné DVB rozhranie"
|
msgstr "Hlavné DVB rozhranie"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Formát videa"
|
msgstr "Formát videa"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr " Zastavi
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "TV program"
|
msgstr "TV program"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Zastavi» prehrávanie"
|
msgstr " Zastavi» prehrávanie"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Hlasitos
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasické VDR"
|
msgstr "Klasické VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG panely"
|
msgstr "ST:TNG panely"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "ktor
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR sa vypne za %s minút"
|
msgstr "VDR sa vypne za %s minút"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "volne"
|
||||||
|
38
po/sl_SI.po
38
po/sl_SI.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
||||||
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
||||||
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
||||||
@ -510,12 +510,6 @@ msgstr "Uporabnik8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Uporabnik9"
|
msgstr "Uporabnik9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "prosto"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "nekodiran"
|
msgstr "nekodiran"
|
||||||
|
|
||||||
@ -924,6 +918,9 @@ msgstr "Podnapisi"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primarna naprava"
|
msgstr "Primarna naprava"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video format"
|
msgstr "Video format"
|
||||||
|
|
||||||
@ -1148,9 +1145,6 @@ msgstr " Prekini snemanje "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Program"
|
msgstr "Program"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Prekini predvajanje"
|
msgstr " Prekini predvajanje"
|
||||||
@ -1280,6 +1274,24 @@ msgstr "Glasnost "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasièni VDR"
|
msgstr "Klasièni VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Konsola"
|
msgstr "ST:TNG Konsola"
|
||||||
|
|
||||||
@ -1342,3 +1354,9 @@ msgstr "Pritisni katerokoli tipko za preklic ponovnega zagona"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR se bo zaustavil v %s minutah"
|
msgstr "VDR se bo zaustavil v %s minutah"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "prosto"
|
||||||
|
38
po/sr_SR.po
38
po/sr_SR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.1\n"
|
"Project-Id-Version: VDR 1.7.1\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
||||||
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
||||||
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
||||||
@ -511,12 +511,6 @@ msgstr "Korisnik8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Korisnik9"
|
msgstr "Korisnik9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "slobodno"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Slobodno"
|
msgstr "Slobodno"
|
||||||
|
|
||||||
@ -942,6 +936,9 @@ msgstr "Titlovi"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primarni DVB ureðaj"
|
msgstr "Primarni DVB ureðaj"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video format"
|
msgstr "Video format"
|
||||||
|
|
||||||
@ -1171,9 +1168,6 @@ msgstr " Zaustavi snimanje "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Raspored Programa"
|
msgstr "Raspored Programa"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Zaustavi reprodukciju"
|
msgstr " Zaustavi reprodukciju"
|
||||||
@ -1305,6 +1299,24 @@ msgstr "Ja
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasièni VDR"
|
msgstr "Klasièni VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Panele"
|
msgstr "ST:TNG Panele"
|
||||||
|
|
||||||
@ -1368,3 +1380,9 @@ msgstr "Pritisni jedan taster za poni
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR se iskljuèuje za %s minuta"
|
msgstr "VDR se iskljuèuje za %s minuta"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "slobodno"
|
||||||
|
38
po/sv_SE.po
38
po/sv_SE.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
||||||
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
||||||
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
||||||
@ -512,12 +512,6 @@ msgstr "Anv
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Användare9"
|
msgstr "Användare9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "ledigt"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Okodad"
|
msgstr "Okodad"
|
||||||
|
|
||||||
@ -926,6 +920,9 @@ msgstr "Knapp$Textning"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primär DVB enhet"
|
msgstr "Primär DVB enhet"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video format"
|
msgstr "Video format"
|
||||||
|
|
||||||
@ -1150,9 +1147,6 @@ msgstr " Avsluta inspelning "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Program"
|
msgstr "Program"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Avsluta uppspelning"
|
msgstr " Avsluta uppspelning"
|
||||||
@ -1282,6 +1276,24 @@ msgstr "Volym "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klassisk VDR"
|
msgstr "Klassisk VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG konsol"
|
msgstr "ST:TNG konsol"
|
||||||
|
|
||||||
@ -1344,3 +1356,9 @@ msgstr "Tryck valfri knapp f
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR kommer att stängas ned om %s minuter"
|
msgstr "VDR kommer att stängas ned om %s minuter"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "ledigt"
|
||||||
|
38
po/tr_TR.po
38
po/tr_TR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
||||||
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
||||||
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "Kullan
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Kullanýcý9"
|
msgstr "Kullanýcý9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Disk"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "boþ"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "Þifresiz"
|
msgstr "Þifresiz"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Altyaz
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Primer DVB arayüzü"
|
msgstr "Primer DVB arayüzü"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Video formatý"
|
msgstr "Video formatý"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Program"
|
msgstr "Program"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Gösteriþi bitir"
|
msgstr " Gösteriþi bitir"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Vol
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Klasik VDR"
|
msgstr "Klasik VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG paneli"
|
msgstr "ST:TNG paneli"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "Yeniden ba
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR %s dakikada kapanacak"
|
msgstr "VDR %s dakikada kapanacak"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Disk"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "boþ"
|
||||||
|
38
po/uk_UA.po
38
po/uk_UA.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.7\n"
|
"Project-Id-Version: VDR 1.7.7\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
||||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
||||||
@ -509,12 +509,6 @@ msgstr "Користувач8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "Користувач8"
|
msgstr "Користувач8"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "Диск"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "вільно"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "FTA (незакодовано)"
|
msgstr "FTA (незакодовано)"
|
||||||
|
|
||||||
@ -923,6 +917,9 @@ msgstr "Субтитри"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "Основний DVB-пристрій"
|
msgstr "Основний DVB-пристрій"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Формат відео"
|
msgstr "Формат відео"
|
||||||
|
|
||||||
@ -1147,9 +1144,6 @@ msgstr " Зупинити запис "
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "Телегід"
|
msgstr "Телегід"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr " Зупинити програвання"
|
msgstr " Зупинити програвання"
|
||||||
@ -1279,6 +1273,24 @@ msgstr "Гучність "
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "Класичний VDR"
|
msgstr "Класичний VDR"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG панелі"
|
msgstr "ST:TNG панелі"
|
||||||
|
|
||||||
@ -1341,3 +1353,9 @@ msgstr "Натисніть будь-яку кнопку для відміни п
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR виключиться через %s хвилин"
|
msgstr "VDR виключиться через %s хвилин"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "Диск"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "вільно"
|
||||||
|
38
po/zh_CN.po
38
po/zh_CN.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-08 14:37+0100\n"
|
"POT-Creation-Date: 2012-06-02 15:10+0200\n"
|
||||||
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
||||||
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
||||||
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
||||||
@ -512,12 +512,6 @@ msgstr "用户8"
|
|||||||
msgid "Key$User9"
|
msgid "Key$User9"
|
||||||
msgstr "用户9"
|
msgstr "用户9"
|
||||||
|
|
||||||
msgid "Disk"
|
|
||||||
msgstr "硬盘已使用"
|
|
||||||
|
|
||||||
msgid "free"
|
|
||||||
msgstr "可录像时间"
|
|
||||||
|
|
||||||
msgid "Free To Air"
|
msgid "Free To Air"
|
||||||
msgstr "剩余空间"
|
msgstr "剩余空间"
|
||||||
|
|
||||||
@ -926,6 +920,9 @@ msgstr "字幕"
|
|||||||
msgid "Setup.DVB$Primary DVB interface"
|
msgid "Setup.DVB$Primary DVB interface"
|
||||||
msgstr "使用中卫星卡接口"
|
msgstr "使用中卫星卡接口"
|
||||||
|
|
||||||
|
msgid "Setup.DVB$Standard compliance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "视频格式"
|
msgstr "视频格式"
|
||||||
|
|
||||||
@ -1150,9 +1147,6 @@ msgstr "是否停止录像?"
|
|||||||
msgid "Schedule"
|
msgid "Schedule"
|
||||||
msgstr "任务列表"
|
msgstr "任务列表"
|
||||||
|
|
||||||
msgid "VDR"
|
|
||||||
msgstr "VDR"
|
|
||||||
|
|
||||||
#. TRANSLATORS: note the leading blank!
|
#. TRANSLATORS: note the leading blank!
|
||||||
msgid " Stop replaying"
|
msgid " Stop replaying"
|
||||||
msgstr "停止回放"
|
msgstr "停止回放"
|
||||||
@ -1282,6 +1276,24 @@ msgstr "音量调整"
|
|||||||
msgid "Classic VDR"
|
msgid "Classic VDR"
|
||||||
msgstr "经典VDR面板"
|
msgstr "经典VDR面板"
|
||||||
|
|
||||||
|
msgid "DISK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LOAD"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "TIMERS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "DEVICES"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "LIVE"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "PLAY"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG 面板"
|
msgstr "ST:TNG 面板"
|
||||||
|
|
||||||
@ -1344,3 +1356,9 @@ msgstr "请按任意键重启"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "VDR will shut down in %s minutes"
|
msgid "VDR will shut down in %s minutes"
|
||||||
msgstr "VDR系统将要在%s分钟关闭"
|
msgstr "VDR系统将要在%s分钟关闭"
|
||||||
|
|
||||||
|
msgid "Disk"
|
||||||
|
msgstr "硬盘已使用"
|
||||||
|
|
||||||
|
msgid "free"
|
||||||
|
msgstr "可录像时间"
|
||||||
|
18
receiver.c
18
receiver.c
@ -4,27 +4,13 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: receiver.c 2.5 2012/02/29 11:49:36 kls Exp $
|
* $Id: receiver.c 2.7 2012/06/02 13:20:38 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "receiver.h"
|
#include "receiver.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
#ifdef LEGACY_CRECEIVER
|
|
||||||
cReceiver::cReceiver(tChannelID ChannelID, int Priority, int Pid, const int *Pids1, const int *Pids2, const int *Pids3)
|
|
||||||
{
|
|
||||||
device = NULL;
|
|
||||||
channelID = ChannelID;
|
|
||||||
priority = constrain(Priority, MINPRIORITY, MAXPRIORITY);
|
|
||||||
numPids = 0;
|
|
||||||
AddPid(Pid);
|
|
||||||
AddPids(Pids1);
|
|
||||||
AddPids(Pids2);
|
|
||||||
AddPids(Pids3);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
cReceiver::cReceiver(const cChannel *Channel, int Priority)
|
cReceiver::cReceiver(const cChannel *Channel, int Priority)
|
||||||
{
|
{
|
||||||
device = NULL;
|
device = NULL;
|
||||||
@ -83,7 +69,7 @@ bool cReceiver::SetPids(const cChannel *Channel)
|
|||||||
AddPids(Channel->Dpids()) &&
|
AddPids(Channel->Dpids()) &&
|
||||||
AddPids(Channel->Spids());
|
AddPids(Channel->Spids());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cReceiver::WantsPid(int Pid)
|
bool cReceiver::WantsPid(int Pid)
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: receiver.h 2.6 2012/03/11 15:25:40 kls Exp $
|
* $Id: receiver.h 2.8 2012/06/02 13:20:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECEIVER_H
|
#ifndef __RECEIVER_H
|
||||||
@ -14,8 +14,6 @@
|
|||||||
|
|
||||||
#define MAXRECEIVEPIDS 64 // the maximum number of PIDs per receiver
|
#define MAXRECEIVEPIDS 64 // the maximum number of PIDs per receiver
|
||||||
|
|
||||||
//#define LEGACY_CRECEIVER // Code enclosed with this macro is deprecated and may be removed in a future version
|
|
||||||
|
|
||||||
class cReceiver {
|
class cReceiver {
|
||||||
friend class cDevice;
|
friend class cDevice;
|
||||||
private:
|
private:
|
||||||
@ -40,9 +38,6 @@ protected:
|
|||||||
///< will be delivered only ONCE, so the cReceiver must make sure that
|
///< will be delivered only ONCE, so the cReceiver must make sure that
|
||||||
///< it will be able to buffer the data if necessary.
|
///< it will be able to buffer the data if necessary.
|
||||||
public:
|
public:
|
||||||
#ifdef LEGACY_CRECEIVER
|
|
||||||
cReceiver(tChannelID ChannelID, int Priority, int Pid, const int *Pids1 = NULL, const int *Pids2 = NULL, const int *Pids3 = NULL);
|
|
||||||
#endif
|
|
||||||
cReceiver(const cChannel *Channel = NULL, int Priority = MINPRIORITY);
|
cReceiver(const cChannel *Channel = NULL, int Priority = MINPRIORITY);
|
||||||
///< Creates a new receiver for the given Channel with the given Priority.
|
///< Creates a new receiver for the given Channel with the given Priority.
|
||||||
///< If Channel is not NULL, its pids are set by a call to SetPids().
|
///< If Channel is not NULL, its pids are set by a call to SetPids().
|
||||||
@ -62,7 +57,7 @@ public:
|
|||||||
///< Adds the given Pids to the list of PIDs of this receiver.
|
///< Adds the given Pids to the list of PIDs of this receiver.
|
||||||
bool SetPids(const cChannel *Channel);
|
bool SetPids(const cChannel *Channel);
|
||||||
///< Sets the PIDs of this receiver to those of the given Channel,
|
///< Sets the PIDs of this receiver to those of the given Channel,
|
||||||
///< replacing and previously stored PIDs. If Channel is NULL, all
|
///< replacing any previously stored PIDs. If Channel is NULL, all
|
||||||
///< PIDs will be cleared. Parameters in the Setup may control whether
|
///< PIDs will be cleared. Parameters in the Setup may control whether
|
||||||
///< certain types of PIDs (like Dolby Digital, for instance) are
|
///< certain types of PIDs (like Dolby Digital, for instance) are
|
||||||
///< actually set. The Channel's ID is stored and can later be retrieved
|
///< actually set. The Channel's ID is stored and can later be retrieved
|
||||||
|
37
recording.c
37
recording.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.c 2.53 2012/03/13 13:17:57 kls Exp $
|
* $Id: recording.c 2.56 2012/06/03 09:51:27 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -153,7 +153,7 @@ void AssertFreeDiskSpace(int Priority, bool Force)
|
|||||||
cRecording *r = DeletedRecordings.First();
|
cRecording *r = DeletedRecordings.First();
|
||||||
cRecording *r0 = NULL;
|
cRecording *r0 = NULL;
|
||||||
while (r) {
|
while (r) {
|
||||||
if (IsOnVideoDirectoryFileSystem(r->FileName())) { // only remove recordings that will actually increase the free video disk space
|
if (r->IsOnVideoDirectoryFileSystem()) { // only remove recordings that will actually increase the free video disk space
|
||||||
if (!r0 || r->Start() < r0->Start())
|
if (!r0 || r->Start() < r0->Start())
|
||||||
r0 = r;
|
r0 = r;
|
||||||
}
|
}
|
||||||
@ -180,7 +180,7 @@ void AssertFreeDiskSpace(int Priority, bool Force)
|
|||||||
cRecording *r = Recordings.First();
|
cRecording *r = Recordings.First();
|
||||||
cRecording *r0 = NULL;
|
cRecording *r0 = NULL;
|
||||||
while (r) {
|
while (r) {
|
||||||
if (IsOnVideoDirectoryFileSystem(r->FileName())) { // only delete recordings that will actually increase the free video disk space
|
if (r->IsOnVideoDirectoryFileSystem()) { // only delete recordings that will actually increase the free video disk space
|
||||||
if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever
|
if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever
|
||||||
if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority
|
if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority
|
||||||
(r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired
|
(r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired
|
||||||
@ -617,6 +617,7 @@ cRecording::cRecording(cTimer *Timer, const cEvent *Event)
|
|||||||
channel = Timer->Channel()->Number();
|
channel = Timer->Channel()->Number();
|
||||||
instanceId = InstanceId;
|
instanceId = InstanceId;
|
||||||
isPesRecording = false;
|
isPesRecording = false;
|
||||||
|
isOnVideoDirectoryFileSystem = -1; // unknown
|
||||||
framesPerSecond = DEFAULTFRAMESPERSECOND;
|
framesPerSecond = DEFAULTFRAMESPERSECOND;
|
||||||
numFrames = -1;
|
numFrames = -1;
|
||||||
deleted = 0;
|
deleted = 0;
|
||||||
@ -677,6 +678,7 @@ cRecording::cRecording(const char *FileName)
|
|||||||
priority = MAXPRIORITY; // assume maximum in case there is no info file
|
priority = MAXPRIORITY; // assume maximum in case there is no info file
|
||||||
lifetime = MAXLIFETIME;
|
lifetime = MAXLIFETIME;
|
||||||
isPesRecording = false;
|
isPesRecording = false;
|
||||||
|
isOnVideoDirectoryFileSystem = -1; // unknown
|
||||||
framesPerSecond = DEFAULTFRAMESPERSECOND;
|
framesPerSecond = DEFAULTFRAMESPERSECOND;
|
||||||
numFrames = -1;
|
numFrames = -1;
|
||||||
deleted = 0;
|
deleted = 0;
|
||||||
@ -723,7 +725,9 @@ cRecording::cRecording(const char *FileName)
|
|||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
else if (errno != ENOENT)
|
else if (errno == ENOENT)
|
||||||
|
info->ownEvent->SetTitle(name);
|
||||||
|
else
|
||||||
LOG_ERROR_STR(*InfoFileName);
|
LOG_ERROR_STR(*InfoFileName);
|
||||||
#ifdef SUMMARYFALLBACK
|
#ifdef SUMMARYFALLBACK
|
||||||
// fall back to the old 'summary.vdr' if there was no 'info.vdr':
|
// fall back to the old 'summary.vdr' if there was no 'info.vdr':
|
||||||
@ -950,6 +954,13 @@ bool cRecording::IsEdited(void) const
|
|||||||
return *s == '%';
|
return *s == '%';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cRecording::IsOnVideoDirectoryFileSystem(void) const
|
||||||
|
{
|
||||||
|
if (isOnVideoDirectoryFileSystem < 0)
|
||||||
|
isOnVideoDirectoryFileSystem = ::IsOnVideoDirectoryFileSystem(FileName());
|
||||||
|
return isOnVideoDirectoryFileSystem;
|
||||||
|
}
|
||||||
|
|
||||||
void cRecording::ReadInfo(void)
|
void cRecording::ReadInfo(void)
|
||||||
{
|
{
|
||||||
info->Read();
|
info->Read();
|
||||||
@ -1251,7 +1262,7 @@ int cRecordings::TotalFileSizeMB(void)
|
|||||||
LOCK_THREAD;
|
LOCK_THREAD;
|
||||||
for (cRecording *recording = First(); recording; recording = Next(recording)) {
|
for (cRecording *recording = First(); recording; recording = Next(recording)) {
|
||||||
int FileSizeMB = recording->FileSizeMB();
|
int FileSizeMB = recording->FileSizeMB();
|
||||||
if (FileSizeMB > 0 && IsOnVideoDirectoryFileSystem(recording->FileName()))
|
if (FileSizeMB > 0 && recording->IsOnVideoDirectoryFileSystem())
|
||||||
size += FileSizeMB;
|
size += FileSizeMB;
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
@ -1263,7 +1274,7 @@ double cRecordings::MBperMinute(void)
|
|||||||
int length = 0;
|
int length = 0;
|
||||||
LOCK_THREAD;
|
LOCK_THREAD;
|
||||||
for (cRecording *recording = First(); recording; recording = Next(recording)) {
|
for (cRecording *recording = First(); recording; recording = Next(recording)) {
|
||||||
if (IsOnVideoDirectoryFileSystem(recording->FileName())) {
|
if (recording->IsOnVideoDirectoryFileSystem()) {
|
||||||
int FileSizeMB = recording->FileSizeMB();
|
int FileSizeMB = recording->FileSizeMB();
|
||||||
if (FileSizeMB > 0) {
|
if (FileSizeMB > 0) {
|
||||||
int LengthInSeconds = recording->LengthInSeconds();
|
int LengthInSeconds = recording->LengthInSeconds();
|
||||||
@ -1422,13 +1433,17 @@ cMark *cMarks::GetNext(int Position)
|
|||||||
|
|
||||||
const char *cRecordingUserCommand::command = NULL;
|
const char *cRecordingUserCommand::command = NULL;
|
||||||
|
|
||||||
void cRecordingUserCommand::InvokeCommand(const char *State, const char *RecordingFileName)
|
void cRecordingUserCommand::InvokeCommand(const char *State, const char *RecordingFileName, const char *SourceFileName)
|
||||||
{
|
{
|
||||||
if (command) {
|
if (command) {
|
||||||
cString cmd = cString::sprintf("%s %s \"%s\"", command, State, *strescape(RecordingFileName, "\\\"$"));
|
cString cmd;
|
||||||
isyslog("executing '%s'", *cmd);
|
if (SourceFileName)
|
||||||
SystemExec(cmd);
|
cmd = cString::sprintf("%s %s \"%s\" \"%s\"", command, State, *strescape(RecordingFileName, "\\\"$"), *strescape(SourceFileName, "\\\"$"));
|
||||||
}
|
else
|
||||||
|
cmd = cString::sprintf("%s %s \"%s\"", command, State, *strescape(RecordingFileName, "\\\"$"));
|
||||||
|
isyslog("executing '%s'", *cmd);
|
||||||
|
SystemExec(cmd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- cIndexFileGenerator ---------------------------------------------------
|
// --- cIndexFileGenerator ---------------------------------------------------
|
||||||
|
14
recording.h
14
recording.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.h 2.30 2012/03/13 12:41:05 kls Exp $
|
* $Id: recording.h 2.33 2012/06/03 09:49:09 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECORDING_H
|
#ifndef __RECORDING_H
|
||||||
@ -22,8 +22,6 @@
|
|||||||
#define TIMERMACRO_TITLE "TITLE"
|
#define TIMERMACRO_TITLE "TITLE"
|
||||||
#define TIMERMACRO_EPISODE "EPISODE"
|
#define TIMERMACRO_EPISODE "EPISODE"
|
||||||
|
|
||||||
//#define __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS // Code enclosed with this macro is deprecated and may be removed in a future version
|
|
||||||
|
|
||||||
extern bool VfatFileSystem;
|
extern bool VfatFileSystem;
|
||||||
extern int InstanceId;
|
extern int InstanceId;
|
||||||
|
|
||||||
@ -93,6 +91,7 @@ private:
|
|||||||
int channel;
|
int channel;
|
||||||
int instanceId;
|
int instanceId;
|
||||||
bool isPesRecording;
|
bool isPesRecording;
|
||||||
|
mutable int isOnVideoDirectoryFileSystem; // -1 = unknown, 0 = no, 1 = yes
|
||||||
double framesPerSecond;
|
double framesPerSecond;
|
||||||
cRecordingInfo *info;
|
cRecordingInfo *info;
|
||||||
cRecording(const cRecording&); // can't copy cRecording
|
cRecording(const cRecording&); // can't copy cRecording
|
||||||
@ -100,9 +99,6 @@ private:
|
|||||||
static char *StripEpisodeName(char *s);
|
static char *StripEpisodeName(char *s);
|
||||||
char *SortName(void) const;
|
char *SortName(void) const;
|
||||||
int GetResume(void) const;
|
int GetResume(void) const;
|
||||||
#ifdef __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
|
|
||||||
public:
|
|
||||||
#endif
|
|
||||||
time_t start;
|
time_t start;
|
||||||
int priority;
|
int priority;
|
||||||
int lifetime;
|
int lifetime;
|
||||||
@ -135,6 +131,7 @@ public:
|
|||||||
bool IsNew(void) const { return GetResume() <= 0; }
|
bool IsNew(void) const { return GetResume() <= 0; }
|
||||||
bool IsEdited(void) const;
|
bool IsEdited(void) const;
|
||||||
bool IsPesRecording(void) const { return isPesRecording; }
|
bool IsPesRecording(void) const { return isPesRecording; }
|
||||||
|
bool IsOnVideoDirectoryFileSystem(void) const;
|
||||||
void ReadInfo(void);
|
void ReadInfo(void);
|
||||||
bool WriteInfo(void);
|
bool WriteInfo(void);
|
||||||
void SetStartTime(time_t Start);
|
void SetStartTime(time_t Start);
|
||||||
@ -208,9 +205,6 @@ class cMark : public cListObject {
|
|||||||
friend class cMarks; // for sorting
|
friend class cMarks; // for sorting
|
||||||
private:
|
private:
|
||||||
double framesPerSecond;
|
double framesPerSecond;
|
||||||
#ifdef __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
|
|
||||||
public:
|
|
||||||
#endif
|
|
||||||
int position;
|
int position;
|
||||||
cString comment;
|
cString comment;
|
||||||
public:
|
public:
|
||||||
@ -251,7 +245,7 @@ private:
|
|||||||
static const char *command;
|
static const char *command;
|
||||||
public:
|
public:
|
||||||
static void SetCommand(const char *Command) { command = Command; }
|
static void SetCommand(const char *Command) { command = Command; }
|
||||||
static void InvokeCommand(const char *State, const char *RecordingFileName);
|
static void InvokeCommand(const char *State, const char *RecordingFileName, const char *SourceFileName = NULL);
|
||||||
};
|
};
|
||||||
|
|
||||||
// The maximum size of a single frame (up to HDTV 1920x1080):
|
// The maximum size of a single frame (up to HDTV 1920x1080):
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinclassic.c 2.6 2011/08/21 11:02:06 kls Exp $
|
* $Id: skinclassic.c 2.7 2012/04/23 08:48:03 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "skinclassic.h"
|
#include "skinclassic.h"
|
||||||
@ -12,6 +12,7 @@
|
|||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
#include "themes.h"
|
#include "themes.h"
|
||||||
|
#include "videodir.h"
|
||||||
|
|
||||||
#define ScrollWidth (Setup.FontOsdSize / 4)
|
#define ScrollWidth (Setup.FontOsdSize / 4)
|
||||||
#define TextFrame (Setup.FontOsdSize / 10)
|
#define TextFrame (Setup.FontOsdSize / 10)
|
||||||
@ -170,7 +171,10 @@ private:
|
|||||||
int y0, y1, y2, y3, y4, y5;
|
int y0, y1, y2, y3, y4, y5;
|
||||||
int lineHeight;
|
int lineHeight;
|
||||||
int dateWidth;
|
int dateWidth;
|
||||||
|
cString title;
|
||||||
cString lastDate;
|
cString lastDate;
|
||||||
|
int lastDiskUsageState;
|
||||||
|
void DrawTitle(void);
|
||||||
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
|
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
|
||||||
void SetTextScrollbar(void);
|
void SetTextScrollbar(void);
|
||||||
public:
|
public:
|
||||||
@ -196,6 +200,7 @@ cSkinClassicDisplayMenu::cSkinClassicDisplayMenu(void)
|
|||||||
{
|
{
|
||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
lineHeight = font->Height();
|
lineHeight = font->Height();
|
||||||
|
lastDiskUsageState = -1;
|
||||||
dateWidth = 0;
|
dateWidth = 0;
|
||||||
x0 = 0;
|
x0 = 0;
|
||||||
x1 = x0 + 2 * TextSpacing;
|
x1 = x0 + 2 * TextSpacing;
|
||||||
@ -270,10 +275,17 @@ void cSkinClassicDisplayMenu::Clear(void)
|
|||||||
osd->DrawRectangle(x0, y1, x3 - 1, y4 - 1, Theme.Color(clrBackground));
|
osd->DrawRectangle(x0, y1, x3 - 1, y4 - 1, Theme.Color(clrBackground));
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinClassicDisplayMenu::SetTitle(const char *Title)
|
void cSkinClassicDisplayMenu::DrawTitle(void)
|
||||||
{
|
{
|
||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
osd->DrawText(x0, y0, Title, Theme.Color(clrMenuTitleFg), Theme.Color(clrMenuTitleBg), font, x3 - x0 - dateWidth);
|
bool WithDisk = MenuCategory() == mcMain || MenuCategory() == mcRecording;
|
||||||
|
osd->DrawText(x0, y0, WithDisk ? cString::sprintf("%s - %s", *title, *cVideoDiskUsage::String()) : title, Theme.Color(clrMenuTitleFg), Theme.Color(clrMenuTitleBg), font, x3 - x0 - dateWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cSkinClassicDisplayMenu::SetTitle(const char *Title)
|
||||||
|
{
|
||||||
|
title = Title;
|
||||||
|
DrawTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinClassicDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
void cSkinClassicDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
||||||
@ -422,6 +434,8 @@ const cFont *cSkinClassicDisplayMenu::GetTextAreaFont(bool FixedFont) const
|
|||||||
|
|
||||||
void cSkinClassicDisplayMenu::Flush(void)
|
void cSkinClassicDisplayMenu::Flush(void)
|
||||||
{
|
{
|
||||||
|
if (cVideoDiskUsage::HasChanged(lastDiskUsageState))
|
||||||
|
DrawTitle();
|
||||||
cString date = DayDateTime();
|
cString date = DayDateTime();
|
||||||
if (!*lastDate || strcmp(date, lastDate)) {
|
if (!*lastDate || strcmp(date, lastDate)) {
|
||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
|
2114
skinlcars.c
Normal file
2114
skinlcars.c
Normal file
File diff suppressed because it is too large
Load Diff
27
skinlcars.h
Normal file
27
skinlcars.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* skinlcars.h: A VDR skin with Star Trek's "LCARS" layout
|
||||||
|
*
|
||||||
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
|
* how to reach the author.
|
||||||
|
*
|
||||||
|
* $Id: skinlcars.h 1.1 2012/04/15 13:17:35 kls Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SKINLCARS_H
|
||||||
|
#define __SKINLCARS_H
|
||||||
|
|
||||||
|
#include "skins.h"
|
||||||
|
|
||||||
|
class cSkinLCARS : public cSkin {
|
||||||
|
public:
|
||||||
|
cSkinLCARS(void);
|
||||||
|
virtual const char *Description(void);
|
||||||
|
virtual cSkinDisplayChannel *DisplayChannel(bool WithInfo);
|
||||||
|
virtual cSkinDisplayMenu *DisplayMenu(void);
|
||||||
|
virtual cSkinDisplayReplay *DisplayReplay(bool ModeOnly);
|
||||||
|
virtual cSkinDisplayVolume *DisplayVolume(void);
|
||||||
|
virtual cSkinDisplayTracks *DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks);
|
||||||
|
virtual cSkinDisplayMessage *DisplayMessage(void);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //__SKINLCARS_H
|
13
skins.c
13
skins.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skins.c 2.5 2012/03/11 14:36:11 kls Exp $
|
* $Id: skins.c 2.10 2012/06/02 11:44:14 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "skins.h"
|
#include "skins.h"
|
||||||
@ -67,9 +67,15 @@ cSkinDisplay::~cSkinDisplay()
|
|||||||
|
|
||||||
cSkinDisplayMenu::cSkinDisplayMenu(void)
|
cSkinDisplayMenu::cSkinDisplayMenu(void)
|
||||||
{
|
{
|
||||||
|
menuCategory = mcUndefined;
|
||||||
SetTabs(0);
|
SetTabs(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cSkinDisplayMenu::SetMenuCategory(eMenuCategory MenuCategory)
|
||||||
|
{
|
||||||
|
menuCategory = MenuCategory;
|
||||||
|
}
|
||||||
|
|
||||||
void cSkinDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5)
|
void cSkinDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5)
|
||||||
{
|
{
|
||||||
tabs[0] = 0;
|
tabs[0] = 0;
|
||||||
@ -166,6 +172,11 @@ cSkinDisplayReplay::cSkinDisplayReplay(void)
|
|||||||
marks = NULL;
|
marks = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cSkinDisplayReplay::SetRecording(const cRecording *Recording)
|
||||||
|
{
|
||||||
|
SetTitle(Recording->Title());
|
||||||
|
}
|
||||||
|
|
||||||
void cSkinDisplayReplay::SetMarks(const cMarks *Marks)
|
void cSkinDisplayReplay::SetMarks(const cMarks *Marks)
|
||||||
{
|
{
|
||||||
marks = Marks;
|
marks = Marks;
|
||||||
|
20
skins.h
20
skins.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skins.h 2.2 2012/03/11 14:38:23 kls Exp $
|
* $Id: skins.h 2.5 2012/05/12 11:10:30 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SKINS_H
|
#ifndef __SKINS_H
|
||||||
@ -72,6 +72,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum eMenuCategory { mcUndefined = -1, mcUnknown = 0, mcMain, mcSchedule, mcChannel, mcTimer, mcRecording, mcPlugin, mcSetup, mcCommand, mcEvent, mcText, mcFolder, mcCam };
|
||||||
|
|
||||||
class cSkinDisplayMenu : public cSkinDisplay {
|
class cSkinDisplayMenu : public cSkinDisplay {
|
||||||
///< This class implements the general purpose menu display, which is
|
///< This class implements the general purpose menu display, which is
|
||||||
///< used throughout the program to display information and let the
|
///< used throughout the program to display information and let the
|
||||||
@ -92,6 +94,7 @@ class cSkinDisplayMenu : public cSkinDisplay {
|
|||||||
public:
|
public:
|
||||||
enum { MaxTabs = 6 };
|
enum { MaxTabs = 6 };
|
||||||
private:
|
private:
|
||||||
|
eMenuCategory menuCategory;
|
||||||
int tabs[MaxTabs];
|
int tabs[MaxTabs];
|
||||||
protected:
|
protected:
|
||||||
cTextScroller textScroller;
|
cTextScroller textScroller;
|
||||||
@ -104,6 +107,16 @@ protected:
|
|||||||
///< part can be found, NULL will be returned.
|
///< part can be found, NULL will be returned.
|
||||||
public:
|
public:
|
||||||
cSkinDisplayMenu(void);
|
cSkinDisplayMenu(void);
|
||||||
|
eMenuCategory MenuCategory(void) const { return menuCategory; }
|
||||||
|
///< Returns the menu category, set by a previous call to SetMenuCategory().
|
||||||
|
virtual void SetMenuCategory(eMenuCategory MenuCategory);
|
||||||
|
///< Sets the current menu category. This allows skins to handle known
|
||||||
|
///< types of menus in different ways, for instance by displaying icons
|
||||||
|
///< or special decorations.
|
||||||
|
///< A derived class can reimplement this function to be informed of any
|
||||||
|
///< changes in the menu category. If it does, it shall call the base class
|
||||||
|
///< function in order to set the members accordingly for later calls to the
|
||||||
|
///< MenuCategory() function.
|
||||||
virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0);
|
virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0);
|
||||||
///< Sets the tab columns to the given values, which are the number of
|
///< Sets the tab columns to the given values, which are the number of
|
||||||
///< characters in each column.
|
///< characters in each column.
|
||||||
@ -200,6 +213,11 @@ public:
|
|||||||
virtual void SetMarks(const cMarks *Marks);
|
virtual void SetMarks(const cMarks *Marks);
|
||||||
///< Sets the editing marks to Marks, which shall be used to display the
|
///< Sets the editing marks to Marks, which shall be used to display the
|
||||||
///< progress bar through a cProgressBar object.
|
///< progress bar through a cProgressBar object.
|
||||||
|
virtual void SetRecording(const cRecording *Recording);
|
||||||
|
///< Sets the recording that is currently being played.
|
||||||
|
///< The default implementation calls SetTitle() with the title and short
|
||||||
|
///< text of the Recording. A derived class can use any information provided
|
||||||
|
///< by the given Recording and display it.
|
||||||
virtual void SetTitle(const char *Title) = 0;
|
virtual void SetTitle(const char *Title) = 0;
|
||||||
///< Sets the title of the recording.
|
///< Sets the title of the recording.
|
||||||
virtual void SetMode(bool Play, bool Forward, int Speed) = 0;
|
virtual void SetMode(bool Play, bool Forward, int Speed) = 0;
|
||||||
|
20
skinsttng.c
20
skinsttng.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinsttng.c 2.14 2012/03/11 14:06:05 kls Exp $
|
* $Id: skinsttng.c 2.15 2012/04/23 08:39:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures
|
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures
|
||||||
@ -16,6 +16,7 @@
|
|||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "themes.h"
|
#include "themes.h"
|
||||||
|
#include "videodir.h"
|
||||||
|
|
||||||
#include "symbols/arrowdown.xpm"
|
#include "symbols/arrowdown.xpm"
|
||||||
#include "symbols/arrowup.xpm"
|
#include "symbols/arrowup.xpm"
|
||||||
@ -401,8 +402,11 @@ private:
|
|||||||
int lineHeight;
|
int lineHeight;
|
||||||
tColor frameColor;
|
tColor frameColor;
|
||||||
int currentIndex;
|
int currentIndex;
|
||||||
|
cString title;
|
||||||
bool message;
|
bool message;
|
||||||
cString lastDate;
|
cString lastDate;
|
||||||
|
int lastDiskUsageState;
|
||||||
|
void DrawTitle(void);
|
||||||
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
|
void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown);
|
||||||
void SetTextScrollbar(void);
|
void SetTextScrollbar(void);
|
||||||
public:
|
public:
|
||||||
@ -429,6 +433,7 @@ cSkinSTTNGDisplayMenu::cSkinSTTNGDisplayMenu(void)
|
|||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
lineHeight = font->Height();
|
lineHeight = font->Height();
|
||||||
frameColor = Theme.Color(clrMenuFrame);
|
frameColor = Theme.Color(clrMenuFrame);
|
||||||
|
lastDiskUsageState = -1;
|
||||||
currentIndex = -1;
|
currentIndex = -1;
|
||||||
message = false;
|
message = false;
|
||||||
x0 = 0;
|
x0 = 0;
|
||||||
@ -548,15 +553,22 @@ void cSkinSTTNGDisplayMenu::Clear(void)
|
|||||||
osd->DrawRectangle(x1, y3, x7 - 1, y4 - 1, Theme.Color(clrBackground));
|
osd->DrawRectangle(x1, y3, x7 - 1, y4 - 1, Theme.Color(clrBackground));
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinSTTNGDisplayMenu::SetTitle(const char *Title)
|
void cSkinSTTNGDisplayMenu::DrawTitle(void)
|
||||||
{
|
{
|
||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
const char *VDR = " VDR";
|
const char *VDR = " VDR";
|
||||||
|
bool WithDisk = MenuCategory() == mcMain || MenuCategory() == mcRecording;
|
||||||
int w = font->Width(VDR);
|
int w = font->Width(VDR);
|
||||||
osd->DrawText(x3 + TextSpacing, y0, Title, Theme.Color(clrMenuTitle), frameColor, font, x4 - w - x3 - TextSpacing);
|
osd->DrawText(x3 + TextSpacing, y0, WithDisk ? cString::sprintf("%s - %s", *title, *cVideoDiskUsage::String()) : title, Theme.Color(clrMenuTitle), frameColor, font, x4 - w - x3 - TextSpacing);
|
||||||
osd->DrawText(x4 - w, y0, VDR, frameColor, clrBlack, font, w, lineHeight);
|
osd->DrawText(x4 - w, y0, VDR, frameColor, clrBlack, font, w, lineHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cSkinSTTNGDisplayMenu::SetTitle(const char *Title)
|
||||||
|
{
|
||||||
|
title = Title;
|
||||||
|
DrawTitle();
|
||||||
|
}
|
||||||
|
|
||||||
void cSkinSTTNGDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
void cSkinSTTNGDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
||||||
{
|
{
|
||||||
cString date = DayDateTime();
|
cString date = DayDateTime();
|
||||||
@ -749,6 +761,8 @@ const cFont *cSkinSTTNGDisplayMenu::GetTextAreaFont(bool FixedFont) const
|
|||||||
|
|
||||||
void cSkinSTTNGDisplayMenu::Flush(void)
|
void cSkinSTTNGDisplayMenu::Flush(void)
|
||||||
{
|
{
|
||||||
|
if (cVideoDiskUsage::HasChanged(lastDiskUsageState))
|
||||||
|
DrawTitle();
|
||||||
if (!message) {
|
if (!message) {
|
||||||
cString date = DayDateTime();
|
cString date = DayDateTime();
|
||||||
if (!*lastDate || strcmp(date, lastDate)) {
|
if (!*lastDate || strcmp(date, lastDate)) {
|
||||||
|
34
svdrp.c
34
svdrp.c
@ -10,7 +10,7 @@
|
|||||||
* and interact with the Video Disk Recorder - or write a full featured
|
* and interact with the Video Disk Recorder - or write a full featured
|
||||||
* graphical interface that sits on top of an SVDRP connection.
|
* graphical interface that sits on top of an SVDRP connection.
|
||||||
*
|
*
|
||||||
* $Id: svdrp.c 2.16 2012/03/04 12:05:56 kls Exp $
|
* $Id: svdrp.c 2.19 2012/05/12 11:55:18 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "svdrp.h"
|
#include "svdrp.h"
|
||||||
@ -432,7 +432,7 @@ void cSVDRP::Reply(int Code, const char *fmt, ...)
|
|||||||
if (Code != 0) {
|
if (Code != 0) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
cString buffer = cString::sprintf(fmt, ap);
|
cString buffer = cString::vsprintf(fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
const char *s = buffer;
|
const char *s = buffer;
|
||||||
while (s && *s) {
|
while (s && *s) {
|
||||||
@ -662,14 +662,14 @@ void cSVDRP::CmdDELR(const char *Option)
|
|||||||
{
|
{
|
||||||
if (*Option) {
|
if (*Option) {
|
||||||
if (isnumber(Option)) {
|
if (isnumber(Option)) {
|
||||||
cRecording *recording = Recordings.Get(strtol(Option, NULL, 10) - 1);
|
cRecording *recording = recordings.Get(strtol(Option, NULL, 10) - 1);
|
||||||
if (recording) {
|
if (recording) {
|
||||||
cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName());
|
cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName());
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
if (!cCutter::Active(recording->FileName())) {
|
if (!cCutter::Active(recording->FileName())) {
|
||||||
if (recording->Delete()) {
|
if (recording->Delete()) {
|
||||||
Reply(250, "Recording \"%s\" deleted", Option);
|
Reply(250, "Recording \"%s\" deleted", Option);
|
||||||
::Recordings.DelByName(recording->FileName());
|
Recordings.DelByName(recording->FileName());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(554, "Error while deleting recording!");
|
Reply(554, "Error while deleting recording!");
|
||||||
@ -681,7 +681,7 @@ void cSVDRP::CmdDELR(const char *Option)
|
|||||||
Reply(550, "Recording \"%s\" is in use by timer %d", Option, rc->Timer()->Index() + 1);
|
Reply(550, "Recording \"%s\" is in use by timer %d", Option, rc->Timer()->Index() + 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(550, "Recording \"%s\" not found%s", Option, Recordings.Count() ? "" : " (use LSTR before deleting)");
|
Reply(550, "Recording \"%s\" not found%s", Option, recordings.Count() ? "" : " (use LSTR before deleting)");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(501, "Error in recording number \"%s\"", Option);
|
Reply(501, "Error in recording number \"%s\"", Option);
|
||||||
@ -723,7 +723,7 @@ void cSVDRP::CmdEDIT(const char *Option)
|
|||||||
{
|
{
|
||||||
if (*Option) {
|
if (*Option) {
|
||||||
if (isnumber(Option)) {
|
if (isnumber(Option)) {
|
||||||
cRecording *recording = Recordings.Get(strtol(Option, NULL, 10) - 1);
|
cRecording *recording = recordings.Get(strtol(Option, NULL, 10) - 1);
|
||||||
if (recording) {
|
if (recording) {
|
||||||
cMarks Marks;
|
cMarks Marks;
|
||||||
if (Marks.Load(recording->FileName(), recording->FramesPerSecond(), recording->IsPesRecording()) && Marks.Count()) {
|
if (Marks.Load(recording->FileName(), recording->FramesPerSecond(), recording->IsPesRecording()) && Marks.Count()) {
|
||||||
@ -740,7 +740,7 @@ void cSVDRP::CmdEDIT(const char *Option)
|
|||||||
Reply(554, "No editing marks defined");
|
Reply(554, "No editing marks defined");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(550, "Recording \"%s\" not found%s", Option, Recordings.Count() ? "" : " (use LSTR before editing)");
|
Reply(550, "Recording \"%s\" not found%s", Option, recordings.Count() ? "" : " (use LSTR before editing)");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(501, "Error in recording number \"%s\"", Option);
|
Reply(501, "Error in recording number \"%s\"", Option);
|
||||||
@ -1076,10 +1076,10 @@ void cSVDRP::CmdLSTE(const char *Option)
|
|||||||
|
|
||||||
void cSVDRP::CmdLSTR(const char *Option)
|
void cSVDRP::CmdLSTR(const char *Option)
|
||||||
{
|
{
|
||||||
bool recordings = Recordings.Update(true);
|
recordings.Update(true);
|
||||||
if (*Option) {
|
if (*Option) {
|
||||||
if (isnumber(Option)) {
|
if (isnumber(Option)) {
|
||||||
cRecording *recording = Recordings.Get(strtol(Option, NULL, 10) - 1);
|
cRecording *recording = recordings.Get(strtol(Option, NULL, 10) - 1);
|
||||||
if (recording) {
|
if (recording) {
|
||||||
FILE *f = fdopen(file, "w");
|
FILE *f = fdopen(file, "w");
|
||||||
if (f) {
|
if (f) {
|
||||||
@ -1097,11 +1097,11 @@ void cSVDRP::CmdLSTR(const char *Option)
|
|||||||
else
|
else
|
||||||
Reply(501, "Error in recording number \"%s\"", Option);
|
Reply(501, "Error in recording number \"%s\"", Option);
|
||||||
}
|
}
|
||||||
else if (recordings) {
|
else if (recordings.Count()) {
|
||||||
cRecording *recording = Recordings.First();
|
cRecording *recording = recordings.First();
|
||||||
while (recording) {
|
while (recording) {
|
||||||
Reply(recording == Recordings.Last() ? 250 : -250, "%d %s", recording->Index() + 1, recording->Title(' ', true));
|
Reply(recording == recordings.Last() ? 250 : -250, "%d %s", recording->Index() + 1, recording->Title(' ', true));
|
||||||
recording = Recordings.Next(recording);
|
recording = recordings.Next(recording);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1367,11 +1367,11 @@ void cSVDRP::CmdPLAY(const char *Option)
|
|||||||
char c = *option;
|
char c = *option;
|
||||||
*option = 0;
|
*option = 0;
|
||||||
if (isnumber(num)) {
|
if (isnumber(num)) {
|
||||||
cRecording *recording = Recordings.Get(strtol(num, NULL, 10) - 1);
|
cRecording *recording = recordings.Get(strtol(num, NULL, 10) - 1);
|
||||||
if (recording) {
|
if (recording) {
|
||||||
if (c)
|
if (c)
|
||||||
option = skipspace(++option);
|
option = skipspace(++option);
|
||||||
cReplayControl::SetRecording(NULL, NULL);
|
cReplayControl::SetRecording(NULL);
|
||||||
cControl::Shutdown();
|
cControl::Shutdown();
|
||||||
if (*option) {
|
if (*option) {
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
@ -1383,13 +1383,13 @@ void cSVDRP::CmdPLAY(const char *Option)
|
|||||||
else
|
else
|
||||||
resume.Save(pos);
|
resume.Save(pos);
|
||||||
}
|
}
|
||||||
cReplayControl::SetRecording(recording->FileName(), recording->Title());
|
cReplayControl::SetRecording(recording->FileName());
|
||||||
cControl::Launch(new cReplayControl);
|
cControl::Launch(new cReplayControl);
|
||||||
cControl::Attach();
|
cControl::Attach();
|
||||||
Reply(250, "Playing recording \"%s\" [%s]", num, recording->Title());
|
Reply(250, "Playing recording \"%s\" [%s]", num, recording->Title());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(550, "Recording \"%s\" not found%s", num, Recordings.Count() ? "" : " (use LSTR before playing)");
|
Reply(550, "Recording \"%s\" not found%s", num, recordings.Count() ? "" : " (use LSTR before playing)");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(501, "Error in recording number \"%s\"", num);
|
Reply(501, "Error in recording number \"%s\"", num);
|
||||||
|
4
svdrp.h
4
svdrp.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: svdrp.h 2.2 2012/02/16 12:37:53 kls Exp $
|
* $Id: svdrp.h 2.3 2012/04/26 10:30:06 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SVDRP_H
|
#ifndef __SVDRP_H
|
||||||
@ -43,7 +43,7 @@ class cSVDRP {
|
|||||||
private:
|
private:
|
||||||
cSocket socket;
|
cSocket socket;
|
||||||
cFile file;
|
cFile file;
|
||||||
cRecordings Recordings;
|
cRecordings recordings;
|
||||||
cPUTEhandler *PUTEhandler;
|
cPUTEhandler *PUTEhandler;
|
||||||
int numChars;
|
int numChars;
|
||||||
int length;
|
int length;
|
||||||
|
4
thread.c
4
thread.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: thread.c 2.3 2009/04/13 13:50:39 kls Exp $
|
* $Id: thread.c 2.4 2012/05/08 11:15:57 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
@ -239,7 +239,7 @@ void cThread::SetDescription(const char *Description, ...)
|
|||||||
if (Description) {
|
if (Description) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, Description);
|
va_start(ap, Description);
|
||||||
description = strdup(cString::sprintf(Description, ap));
|
description = strdup(cString::vsprintf(Description, ap));
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
19
timers.c
19
timers.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: timers.c 2.8 2012/02/27 09:38:41 kls Exp $
|
* $Id: timers.c 2.9 2012/04/25 09:02:03 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
@ -142,7 +142,7 @@ cTimer& cTimer::operator= (const cTimer &Timer)
|
|||||||
|
|
||||||
int cTimer::Compare(const cListObject &ListObject) const
|
int cTimer::Compare(const cListObject &ListObject) const
|
||||||
{
|
{
|
||||||
cTimer *ti = (cTimer *)&ListObject;
|
const cTimer *ti = (const cTimer *)&ListObject;
|
||||||
time_t t1 = StartTime();
|
time_t t1 = StartTime();
|
||||||
time_t t2 = ti->StartTime();
|
time_t t2 = ti->StartTime();
|
||||||
int r = t1 - t2;
|
int r = t1 - t2;
|
||||||
@ -820,3 +820,18 @@ void cTimers::DeleteExpired(void)
|
|||||||
}
|
}
|
||||||
lastDeleteExpired = time(NULL);
|
lastDeleteExpired = time(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- cSortedTimers ---------------------------------------------------------
|
||||||
|
|
||||||
|
static int CompareTimers(const void *a, const void *b)
|
||||||
|
{
|
||||||
|
return (*(const cTimer **)a)->Compare(**(const cTimer **)b);
|
||||||
|
}
|
||||||
|
|
||||||
|
cSortedTimers::cSortedTimers(void)
|
||||||
|
:cVector(Timers.Count())
|
||||||
|
{
|
||||||
|
for (const cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer))
|
||||||
|
Append(Timer);
|
||||||
|
Sort(CompareTimers);
|
||||||
|
}
|
||||||
|
7
timers.h
7
timers.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: timers.h 2.3 2012/02/20 15:52:57 kls Exp $
|
* $Id: timers.h 2.4 2012/04/15 13:21:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TIMERS_H
|
#ifndef __TIMERS_H
|
||||||
@ -135,4 +135,9 @@ public:
|
|||||||
|
|
||||||
extern cTimers Timers;
|
extern cTimers Timers;
|
||||||
|
|
||||||
|
class cSortedTimers : public cVector<const cTimer *> {
|
||||||
|
public:
|
||||||
|
cSortedTimers(void);
|
||||||
|
};
|
||||||
|
|
||||||
#endif //__TIMERS_H
|
#endif //__TIMERS_H
|
||||||
|
13
tools.c
13
tools.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.c 2.22 2012/02/18 15:30:35 kls Exp $
|
* $Id: tools.c 2.24 2012/05/12 13:29:20 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
@ -958,7 +958,7 @@ cString cString::sprintf(const char *fmt, ...)
|
|||||||
return cString(buffer, true);
|
return cString(buffer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
cString cString::sprintf(const char *fmt, va_list &ap)
|
cString cString::vsprintf(const char *fmt, va_list &ap)
|
||||||
{
|
{
|
||||||
char *buffer;
|
char *buffer;
|
||||||
if (!fmt || vasprintf(&buffer, fmt, ap) < 0) {
|
if (!fmt || vasprintf(&buffer, fmt, ap) < 0) {
|
||||||
@ -1042,6 +1042,15 @@ cString DateString(time_t t)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cString ShortDateString(time_t t)
|
||||||
|
{
|
||||||
|
char buf[32];
|
||||||
|
struct tm tm_r;
|
||||||
|
tm *tm = localtime_r(&t, &tm_r);
|
||||||
|
strftime(buf, sizeof(buf), "%d.%m.%y", tm);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
cString TimeString(time_t t)
|
cString TimeString(time_t t)
|
||||||
{
|
{
|
||||||
char buf[25];
|
char buf[25];
|
||||||
|
22
tools.h
22
tools.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.h 2.16 2012/02/29 10:41:00 kls Exp $
|
* $Id: tools.h 2.21 2012/05/20 13:58:06 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TOOLS_H
|
#ifndef __TOOLS_H
|
||||||
@ -177,7 +177,7 @@ public:
|
|||||||
cString &operator=(const char *String);
|
cString &operator=(const char *String);
|
||||||
cString &Truncate(int Index); ///< Truncate the string at the given Index (if Index is < 0 it is counted from the end of the string).
|
cString &Truncate(int Index); ///< Truncate the string at the given Index (if Index is < 0 it is counted from the end of the string).
|
||||||
static cString sprintf(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
|
static cString sprintf(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
|
||||||
static cString sprintf(const char *fmt, va_list &ap);
|
static cString vsprintf(const char *fmt, va_list &ap);
|
||||||
};
|
};
|
||||||
|
|
||||||
ssize_t safe_read(int filedes, void *buffer, size_t size);
|
ssize_t safe_read(int filedes, void *buffer, size_t size);
|
||||||
@ -228,13 +228,26 @@ void TouchFile(const char *FileName);
|
|||||||
time_t LastModifiedTime(const char *FileName);
|
time_t LastModifiedTime(const char *FileName);
|
||||||
off_t FileSize(const char *FileName); ///< returns the size of the given file, or -1 in case of an error (e.g. if the file doesn't exist)
|
off_t FileSize(const char *FileName); ///< returns the size of the given file, or -1 in case of an error (e.g. if the file doesn't exist)
|
||||||
cString WeekDayName(int WeekDay);
|
cString WeekDayName(int WeekDay);
|
||||||
|
///< Converts the given WeekDay (0=Sunday, 1=Monday, ...) to a three letter
|
||||||
|
///< day name.
|
||||||
cString WeekDayName(time_t t);
|
cString WeekDayName(time_t t);
|
||||||
|
///< Converts the week day of the given time to a three letter day name.
|
||||||
cString WeekDayNameFull(int WeekDay);
|
cString WeekDayNameFull(int WeekDay);
|
||||||
|
///< Converts the given WeekDay (0=Sunday, 1=Monday, ...) to a full
|
||||||
|
///< day name.
|
||||||
cString WeekDayNameFull(time_t t);
|
cString WeekDayNameFull(time_t t);
|
||||||
|
///< Converts the week day of the given time to a full day name.
|
||||||
cString DayDateTime(time_t t = 0);
|
cString DayDateTime(time_t t = 0);
|
||||||
|
///< Converts the given time to a string of the form "www dd.mm. hh:mm".
|
||||||
|
///< If no time is given, the current time is taken.
|
||||||
cString TimeToString(time_t t);
|
cString TimeToString(time_t t);
|
||||||
|
///< Converts the given time to a string of the form "www mmm dd hh:mm:ss yyyy".
|
||||||
cString DateString(time_t t);
|
cString DateString(time_t t);
|
||||||
|
///< Converts the given time to a string of the form "www dd.mm.yyyy".
|
||||||
|
cString ShortDateString(time_t t);
|
||||||
|
///< Converts the given time to a string of the form "dd.mm.yy".
|
||||||
cString TimeString(time_t t);
|
cString TimeString(time_t t);
|
||||||
|
///< Converts the given time to a string of the form "hh:mm".
|
||||||
uchar *RgbToJpeg(uchar *Mem, int Width, int Height, int &Size, int Quality = 100);
|
uchar *RgbToJpeg(uchar *Mem, int Width, int Height, int &Size, int Quality = 100);
|
||||||
///< Converts the given Memory to a JPEG image and returns a pointer
|
///< Converts the given Memory to a JPEG image and returns a pointer
|
||||||
///< to the resulting image. Mem must point to a data block of exactly
|
///< to the resulting image. Mem must point to a data block of exactly
|
||||||
@ -457,6 +470,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<class T> class cVector {
|
template<class T> class cVector {
|
||||||
|
///< cVector may only be used for *simple* types, like int or pointers - not for class objects that allocate additional memory!
|
||||||
private:
|
private:
|
||||||
mutable int allocated;
|
mutable int allocated;
|
||||||
mutable int size;
|
mutable int size;
|
||||||
@ -515,7 +529,7 @@ public:
|
|||||||
virtual void Append(T Data)
|
virtual void Append(T Data)
|
||||||
{
|
{
|
||||||
if (size >= allocated)
|
if (size >= allocated)
|
||||||
Realloc(allocated * 4 / 2); // increase size by 50%
|
Realloc(allocated * 3 / 2); // increase size by 50%
|
||||||
data[size++] = Data;
|
data[size++] = Data;
|
||||||
}
|
}
|
||||||
virtual void Remove(int Index)
|
virtual void Remove(int Index)
|
||||||
@ -526,6 +540,8 @@ public:
|
|||||||
}
|
}
|
||||||
virtual void Clear(void)
|
virtual void Clear(void)
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
data[i] = T(0);
|
||||||
size = 0;
|
size = 0;
|
||||||
}
|
}
|
||||||
void Sort(__compar_fn_t Compare)
|
void Sort(__compar_fn_t Compare)
|
||||||
|
4
vdr.c
4
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.tvdr.de
|
* The project's page is at http://www.tvdr.de
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 2.35 2012/03/14 09:09:19 kls Exp $
|
* $Id: vdr.c 2.36 2012/04/26 09:23:41 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -56,6 +56,7 @@
|
|||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
#include "shutdown.h"
|
#include "shutdown.h"
|
||||||
#include "skinclassic.h"
|
#include "skinclassic.h"
|
||||||
|
#include "skinlcars.h"
|
||||||
#include "skinsttng.h"
|
#include "skinsttng.h"
|
||||||
#include "sourceparams.h"
|
#include "sourceparams.h"
|
||||||
#include "sources.h"
|
#include "sources.h"
|
||||||
@ -677,6 +678,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Default skins:
|
// Default skins:
|
||||||
|
|
||||||
|
new cSkinLCARS;
|
||||||
new cSkinSTTNG;
|
new cSkinSTTNG;
|
||||||
new cSkinClassic;
|
new cSkinClassic;
|
||||||
Skins.SetCurrent(Setup.OSDSkin);
|
Skins.SetCurrent(Setup.OSDSkin);
|
||||||
|
42
videodir.c
42
videodir.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: videodir.c 2.0 2008/02/16 13:00:03 kls Exp $
|
* $Id: videodir.c 2.1 2012/04/22 15:03:10 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "videodir.h"
|
#include "videodir.h"
|
||||||
@ -241,3 +241,43 @@ bool IsOnVideoDirectoryFileSystem(const char *FileName)
|
|||||||
} while (Dir.Next());
|
} while (Dir.Next());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- cVideoDiskUsage -------------------------------------------------------
|
||||||
|
|
||||||
|
#define DISKSPACECHEK 5 // seconds between disk space checks
|
||||||
|
#define MB_PER_MINUTE 25.75 // this is just an estimate!
|
||||||
|
|
||||||
|
int cVideoDiskUsage::state = 0;
|
||||||
|
time_t cVideoDiskUsage::lastChecked = 0;
|
||||||
|
int cVideoDiskUsage::usedPercent = 0;
|
||||||
|
int cVideoDiskUsage::freeMB = 0;
|
||||||
|
int cVideoDiskUsage::freeMinutes = 0;
|
||||||
|
|
||||||
|
bool cVideoDiskUsage::HasChanged(int &State)
|
||||||
|
{
|
||||||
|
if (time(NULL) - lastChecked > DISKSPACECHEK) {
|
||||||
|
int FreeMB;
|
||||||
|
int UsedPercent = VideoDiskSpace(&FreeMB);
|
||||||
|
if (FreeMB != freeMB) {
|
||||||
|
usedPercent = UsedPercent;
|
||||||
|
freeMB = FreeMB;
|
||||||
|
int MBperMinute = Recordings.MBperMinute();
|
||||||
|
if (MBperMinute <= 0)
|
||||||
|
MBperMinute = MB_PER_MINUTE;
|
||||||
|
freeMinutes = int(double(FreeMB) / MBperMinute);
|
||||||
|
state++;
|
||||||
|
}
|
||||||
|
lastChecked = time(NULL);
|
||||||
|
}
|
||||||
|
if (State != state) {
|
||||||
|
State = state;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cString cVideoDiskUsage::String(void)
|
||||||
|
{
|
||||||
|
HasChanged(state);
|
||||||
|
return cString::sprintf("%s %d%% - %2d:%02d %s", tr("Disk"), usedPercent, freeMinutes / 60, freeMinutes % 60, tr("free"));
|
||||||
|
}
|
||||||
|
40
videodir.h
40
videodir.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: videodir.h 2.0 2008/02/16 12:53:11 kls Exp $
|
* $Id: videodir.h 2.1 2012/04/22 15:07:56 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __VIDEODIR_H
|
#ifndef __VIDEODIR_H
|
||||||
@ -25,4 +25,42 @@ cString PrefixVideoFileName(const char *FileName, char Prefix);
|
|||||||
void RemoveEmptyVideoDirectories(void);
|
void RemoveEmptyVideoDirectories(void);
|
||||||
bool IsOnVideoDirectoryFileSystem(const char *FileName);
|
bool IsOnVideoDirectoryFileSystem(const char *FileName);
|
||||||
|
|
||||||
|
class cVideoDiskUsage {
|
||||||
|
private:
|
||||||
|
static int state;
|
||||||
|
static time_t lastChecked;
|
||||||
|
static int usedPercent;
|
||||||
|
static int freeMB;
|
||||||
|
static int freeMinutes;
|
||||||
|
public:
|
||||||
|
static bool HasChanged(int &State);
|
||||||
|
///< Returns true if the usage of the video disk space has changed since the last
|
||||||
|
///< call to this function with the given State variable. The caller should
|
||||||
|
///< initialize State to -1, and it will be set to the current internal state
|
||||||
|
///< value of the video disk usage checker upon return. Future calls with the same
|
||||||
|
///< State variable can then quickly check for changes.
|
||||||
|
static void ForceCheck(void) { lastChecked = 0; }
|
||||||
|
///< To avoid unnecessary load, the video disk usage is only actually checked
|
||||||
|
///< every DISKSPACECHEK seconds. Calling ForceCheck() makes sure that the next call
|
||||||
|
///< to HasChanged() will check the disk usage immediately. This is useful in case
|
||||||
|
///< some files have been deleted and the result shall be displayed instantly.
|
||||||
|
static cString String(void);
|
||||||
|
///< Returns a localized string of the form "Disk nn% - hh:mm free".
|
||||||
|
///< This function is mainly for use in skins that want to retain the display of the
|
||||||
|
///< free disk space in the menu title, as was the case until VDR version 1.7.27.
|
||||||
|
///< An implicit call to HasChanged() is done in this function, to make sure the
|
||||||
|
///< returned value is up to date.
|
||||||
|
static int UsedPercent(void) { return usedPercent; }
|
||||||
|
///< Returns the used space of the video disk in percent.
|
||||||
|
///< The caller should call HasChanged() first, to make sure the value is up to date.
|
||||||
|
static int FreeMB(void) { return freeMB; }
|
||||||
|
///< Returns the amount of free space on the video disk in MB.
|
||||||
|
///< The caller should call HasChanged() first, to make sure the value is up to date.
|
||||||
|
static int FreeMinutes(void) { return freeMinutes; }
|
||||||
|
///< Returns the number of minutes that can still be recorded on the video disk.
|
||||||
|
///< This is an estimate and depends on the data rate of the existing recordings.
|
||||||
|
///< There is no guarantee that this value will actually be met.
|
||||||
|
///< The caller should call HasChanged() first, to make sure the value is up to date.
|
||||||
|
};
|
||||||
|
|
||||||
#endif //__VIDEODIR_H
|
#endif //__VIDEODIR_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user