mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
VDR version 2.2.0 is now available at ftp://ftp.tvdr.de/vdr/vdr-2.2.0.tar.bz2 A 'diff' against the previous developer version is available at ftp://ftp.tvdr.de/vdr/vdr-2.1.10-2.2.0.diff MD5 checksums: 8853f64c0fc3d41ffd3b4bfc6f0a14b7 vdr-2.2.0.tar.bz2 2d75806f90a4f1c8b3e30d7568891dc6 vdr-2.1.10-2.2.0.diff A summary of all the major changes since the last stable version 2.0.0 can be found at http://www.tvdr.de/changelog.htm When updating from an earlier version of VDR please make sure you read the INSTALL and MANUAL files that come with the VDR source _before_ doing so! Please make sure you have backup copies of all your configuration files, and verify carefully that your timers will be set to the correct channels after switching to this new version. Thanks to the many people who have contributed in the making, testing and debugging of this new version of VDR, and also to all users who have been enjoying VDR over the past 15 years! Please also visit the VDR homepage at http://www.tvdr.de and VDR's facebook page at https://www.facebook.com/VideoDiskRecorder Have fun! Klaus From the HISTORY file: - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras). - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski). - Updated the Romanian OSD texts (thanks to Lucian Muresan). - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Updated the Italian OSD texts (thanks to Diego Pierotto and Nino Gerbino). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Updated the Swedish OSD texts (thanks to Magnus Sirwiö). - Updated the Hungarian OSD texts (thanks to István Füley and Albert Danis). - Modified the German translations of the OSD texts regarding "adaptive skipping". - Fixed pausing replay at the last editing mark (reported by Stefan Herdler). - Updated the Polish OSD texts (thanks to Tomasz Maciej Nowak). - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk). - Fixed using the default sort mode in a video directory without a ".sort" file (reported by Stefan Herdler). - Improved the German translations of "EPG bugfix level"", "StreamId" and "T2SystemId" (thanks to Albert Danis). - Updated the Czech OSD texts (thanks to Ales Jurik). - Updated the Slovak OSD texts (thanks to Milan Hrala). - Updated sources.conf to reflect the fact that Thor 5/6 and Intelsat 10-02 are actually in two separate positions. - Updated the French OSD texts (thanks to Régis Bossut). - Updated the Spanish OSD texts (thanks to Gabriel Bonich). - Fixed leading/trailing/multiple blanks in the translation files. - Bumped all version numbers to 2.2.0. - Official release.
210 lines
6.4 KiB
C
210 lines
6.4 KiB
C
/*
|
|
* status.c: A plugin for the Video Disk Recorder
|
|
*
|
|
* See the README file for copyright information and how to reach the author.
|
|
*
|
|
* $Id: status.c 3.2 2015/02/17 13:13:21 kls Exp $
|
|
*/
|
|
|
|
#include <vdr/plugin.h>
|
|
#include <vdr/status.h>
|
|
|
|
static const char *VERSION = "2.2.0";
|
|
static const char *DESCRIPTION = "Status monitor test";
|
|
static const char *MAINMENUENTRY = NULL;
|
|
|
|
// ---
|
|
|
|
class cStatusTest : public cStatus {
|
|
protected:
|
|
virtual void TimerChange(const cTimer *Timer, eTimerChange Change);
|
|
virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView);
|
|
virtual void Recording(const cDevice *Device, const char *Name, const char *FileName, bool On);
|
|
virtual void Replaying(const cControl *Control, const char *Name, const char *FileName, bool On);
|
|
virtual void SetVolume(int Volume, bool Absolute);
|
|
virtual void SetAudioTrack(int Index, const char * const *Tracks);
|
|
virtual void SetAudioChannel(int AudioChannel);
|
|
virtual void SetSubtitleTrack(int Index, const char * const *Tracks);
|
|
virtual void OsdClear(void);
|
|
virtual void OsdTitle(const char *Title);
|
|
virtual void OsdStatusMessage(const char *Message);
|
|
virtual void OsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue);
|
|
virtual void OsdItem(const char *Text, int Index);
|
|
virtual void OsdCurrentItem(const char *Text);
|
|
virtual void OsdTextItem(const char *Text, bool Scroll);
|
|
virtual void OsdChannel(const char *Text);
|
|
virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle);
|
|
};
|
|
|
|
void cStatusTest::TimerChange(const cTimer *Timer, eTimerChange Change)
|
|
{
|
|
dsyslog("status: cStatusTest::TimerChange %s %d", Timer ? *Timer->ToText(true) : "-", Change);
|
|
}
|
|
|
|
void cStatusTest::ChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView)
|
|
{
|
|
dsyslog("status: cStatusTest::ChannelSwitch %d %d %d", Device->CardIndex(), ChannelNumber, LiveView);
|
|
}
|
|
|
|
void cStatusTest::Recording(const cDevice *Device, const char *Name, const char *FileName, bool On)
|
|
{
|
|
dsyslog("status: cStatusTest::Recording %d %s %s %d", Device->CardIndex(), Name, FileName, On);
|
|
}
|
|
|
|
void cStatusTest::Replaying(const cControl *Control, const char *Name, const char *FileName, bool On)
|
|
{
|
|
dsyslog("status: cStatusTest::Replaying %s %s %d", Name, FileName, On);
|
|
}
|
|
|
|
void cStatusTest::SetVolume(int Volume, bool Absolute)
|
|
{
|
|
dsyslog("status: cStatusTest::SetVolume %d %d", Volume, Absolute);
|
|
}
|
|
|
|
void cStatusTest::SetAudioTrack(int Index, const char * const *Tracks)
|
|
{
|
|
dsyslog("status: cStatusTest::SetAudioTrack %d %s", Index, Tracks[Index]);
|
|
}
|
|
|
|
void cStatusTest::SetAudioChannel(int AudioChannel)
|
|
{
|
|
dsyslog("status: cStatusTest::SetAudioChannel %d", AudioChannel);
|
|
}
|
|
|
|
void cStatusTest::SetSubtitleTrack(int Index, const char * const *Tracks)
|
|
{
|
|
dsyslog("status: cStatusTest::SetSubtitleTrack %d %s", Index, Tracks[Index]);
|
|
}
|
|
|
|
void cStatusTest::OsdClear(void)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdClear");
|
|
}
|
|
|
|
void cStatusTest::OsdTitle(const char *Title)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdTitle '%s'", Title);
|
|
}
|
|
|
|
void cStatusTest::OsdStatusMessage(const char *Message)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdStatusMessage '%s'", Message);
|
|
}
|
|
|
|
void cStatusTest::OsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdHelpKeys %s - %s - %s - %s", Red, Green, Yellow, Blue);
|
|
}
|
|
|
|
void cStatusTest::OsdItem(const char *Text, int Index)
|
|
{
|
|
//dsyslog("status: cStatusTest::OsdItem %s %d", Text, Index);
|
|
}
|
|
|
|
void cStatusTest::OsdCurrentItem(const char *Text)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdCurrentItem %s", Text);
|
|
}
|
|
|
|
void cStatusTest::OsdTextItem(const char *Text, bool Scroll)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdTextItem %s %d", Text, Scroll);
|
|
}
|
|
|
|
void cStatusTest::OsdChannel(const char *Text)
|
|
{
|
|
dsyslog("status: cStatusTest::OsdChannel %s", Text);
|
|
}
|
|
|
|
void cStatusTest::OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle)
|
|
{
|
|
char buffer[25];
|
|
struct tm tm_r;
|
|
dsyslog("status: cStatusTest::OsdProgramme");
|
|
strftime(buffer, sizeof(buffer), "%R", localtime_r(&PresentTime, &tm_r));
|
|
dsyslog("%5s %s", buffer, PresentTitle);
|
|
dsyslog("%5s %s", "", PresentSubtitle);
|
|
strftime(buffer, sizeof(buffer), "%R", localtime_r(&FollowingTime, &tm_r));
|
|
dsyslog("%5s %s", buffer, FollowingTitle);
|
|
dsyslog("%5s %s", "", FollowingSubtitle);
|
|
}
|
|
|
|
// ---
|
|
|
|
class cPluginStatus : public cPlugin {
|
|
private:
|
|
// Add any member variables or functions you may need here.
|
|
cStatusTest *statusTest;
|
|
public:
|
|
cPluginStatus(void);
|
|
virtual ~cPluginStatus();
|
|
virtual const char *Version(void) { return VERSION; }
|
|
virtual const char *Description(void) { return DESCRIPTION; }
|
|
virtual const char *CommandLineHelp(void);
|
|
virtual bool ProcessArgs(int argc, char *argv[]);
|
|
virtual bool Start(void);
|
|
virtual void Housekeeping(void);
|
|
virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
|
|
virtual cOsdObject *MainMenuAction(void);
|
|
virtual cMenuSetupPage *SetupMenu(void);
|
|
virtual bool SetupParse(const char *Name, const char *Value);
|
|
};
|
|
|
|
cPluginStatus::cPluginStatus(void)
|
|
{
|
|
// Initialize any member variables here.
|
|
// DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
|
|
// VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
|
|
statusTest = NULL;
|
|
}
|
|
|
|
cPluginStatus::~cPluginStatus()
|
|
{
|
|
// Clean up after yourself!
|
|
delete statusTest;
|
|
}
|
|
|
|
const char *cPluginStatus::CommandLineHelp(void)
|
|
{
|
|
// Return a string that describes all known command line options.
|
|
return NULL;
|
|
}
|
|
|
|
bool cPluginStatus::ProcessArgs(int argc, char *argv[])
|
|
{
|
|
// Implement command line argument processing here if applicable.
|
|
return true;
|
|
}
|
|
|
|
bool cPluginStatus::Start(void)
|
|
{
|
|
// Start any background activities the plugin shall perform.
|
|
statusTest = new cStatusTest;
|
|
return true;
|
|
}
|
|
|
|
void cPluginStatus::Housekeeping(void)
|
|
{
|
|
// Perform any cleanup or other regular tasks.
|
|
}
|
|
|
|
cOsdObject *cPluginStatus::MainMenuAction(void)
|
|
{
|
|
// Perform the action when selected from the main VDR menu.
|
|
return NULL;
|
|
}
|
|
|
|
cMenuSetupPage *cPluginStatus::SetupMenu(void)
|
|
{
|
|
// Return a setup menu in case the plugin supports one.
|
|
return NULL;
|
|
}
|
|
|
|
bool cPluginStatus::SetupParse(const char *Name, const char *Value)
|
|
{
|
|
// Parse your own setup parameters and store their values.
|
|
return false;
|
|
}
|
|
|
|
VDRPLUGINCREATOR(cPluginStatus); // Don't touch this!
|