1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Added SetMessage() functions to the Replay and Channel skin functions

This commit is contained in:
Klaus Schmidinger 2004-05-29 13:21:02 +02:00
parent a4bdc1ada3
commit 6b60a35f8d
5 changed files with 103 additions and 11 deletions

View File

@ -526,6 +526,7 @@ Oliver Endriss <o.endriss@gmx.de>
for adding a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel() for adding a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel()
for reporting that the "Classic VDR" skin wrongly displayed unused color buttons for reporting that the "Classic VDR" skin wrongly displayed unused color buttons
for reporting some missing cStatus::MsgOsdTextItem() calls for reporting some missing cStatus::MsgOsdTextItem() calls
for reporting a missing "Editing process finished" message with skins
Reinhard Walter Buchner <rw.buchner@freenet.de> Reinhard Walter Buchner <rw.buchner@freenet.de>
for adding some satellites to 'sources.conf' for adding some satellites to 'sources.conf'

View File

@ -2838,7 +2838,7 @@ Video Disk Recorder Revision History
- Added some missing cStatus::MsgOsdTextItem() calls (thanks to Oliver Endriss for - Added some missing cStatus::MsgOsdTextItem() calls (thanks to Oliver Endriss for
reporting this one). reporting this one).
2004-05-28: Version 1.3.9 2004-05-29: Version 1.3.9
- Completed Croatian language texts (thanks to Drazen Dupor). - Completed Croatian language texts (thanks to Drazen Dupor).
- New iso8859-2 font to fix the problem with program freezes (thanks to Drazen Dupor). - New iso8859-2 font to fix the problem with program freezes (thanks to Drazen Dupor).
@ -2855,3 +2855,7 @@ Video Disk Recorder Revision History
use more independent clrMenu* colors. use more independent clrMenu* colors.
- Fixed removing the "scanning recordings..." message in case the video directory - Fixed removing the "scanning recordings..." message in case the video directory
is empty (thanks to Andreas Regel for reporting this one). is empty (thanks to Andreas Regel for reporting this one).
- Added SetMessage() functions to the Replay and Channel skin functions. Plugins
that implement skins will need to implement these functions. This fixes a missing
"Editing process finished" message (thanks to Oliver Endriss for reporting this
one).

View File

@ -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 1.4 2004/05/29 09:18:21 kls Exp $ * $Id: skinclassic.c 1.5 2004/05/29 13:13:50 kls Exp $
*/ */
#include "skinclassic.h" #include "skinclassic.h"
@ -76,11 +76,13 @@ private:
cOsd *osd; cOsd *osd;
int lineHeight; int lineHeight;
int timeWidth; int timeWidth;
bool message;
public: public:
cSkinClassicDisplayChannel(bool WithInfo); cSkinClassicDisplayChannel(bool WithInfo);
virtual ~cSkinClassicDisplayChannel(); virtual ~cSkinClassicDisplayChannel();
virtual void SetChannel(const cChannel *Channel, int Number); virtual void SetChannel(const cChannel *Channel, int Number);
virtual void SetEvents(const cEvent *Present, const cEvent *Following); virtual void SetEvents(const cEvent *Present, const cEvent *Following);
virtual void SetMessage(eMessageType Type, const char *Text);
virtual void Flush(void); virtual void Flush(void);
}; };
@ -89,6 +91,7 @@ cSkinClassicDisplayChannel::cSkinClassicDisplayChannel(bool WithInfo)
int Lines = WithInfo ? 5 : 1; int Lines = WithInfo ? 5 : 1;
const cFont *font = cFont::GetFont(fontOsd); const cFont *font = cFont::GetFont(fontOsd);
lineHeight = font->Height(); lineHeight = font->Height();
message = false;
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + (Setup.ChannelInfoPos ? 0 : Setup.OSDHeight - Lines * lineHeight)); osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop + (Setup.ChannelInfoPos ? 0 : Setup.OSDHeight - Lines * lineHeight));
timeWidth = font->Width("00:00") + 4; timeWidth = font->Width("00:00") + 4;
tArea Areas[] = { { 0, 0, Setup.OSDWidth - 1, Lines * lineHeight, 4 } }; tArea Areas[] = { { 0, 0, Setup.OSDWidth - 1, Lines * lineHeight, 4 } };
@ -121,10 +124,26 @@ void cSkinClassicDisplayChannel::SetEvents(const cEvent *Present, const cEvent *
} }
} }
void cSkinClassicDisplayChannel::SetMessage(eMessageType Type, const char *Text)
{
const cFont *font = cFont::GetFont(fontOsd);
if (Text) {
osd->SaveRegion(0, 0, osd->Width() - 1, lineHeight - 1);
osd->DrawText(0, 0, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, osd->Width(), 0, taCenter);
message = true;
}
else {
osd->RestoreRegion();
message = false;
}
}
void cSkinClassicDisplayChannel::Flush(void) void cSkinClassicDisplayChannel::Flush(void)
{ {
const char *date = DayDateTime(); if (!message) {
osd->DrawText(osd->Width() - cFont::GetFont(fontSml)->Width(date) - 2, 0, date, Theme.Color(clrChannelDate), Theme.Color(clrBackground), cFont::GetFont(fontSml)); const char *date = DayDateTime();
osd->DrawText(osd->Width() - cFont::GetFont(fontSml)->Width(date) - 2, 0, date, Theme.Color(clrChannelDate), Theme.Color(clrBackground), cFont::GetFont(fontSml));
}
osd->Flush(); osd->Flush();
} }
@ -333,6 +352,7 @@ private:
int x0, x1; int x0, x1;
int y0, y1, y2, y3; int y0, y1, y2, y3;
int lastCurrentWidth; int lastCurrentWidth;
bool message;
public: public:
cSkinClassicDisplayReplay(bool ModeOnly); cSkinClassicDisplayReplay(bool ModeOnly);
virtual ~cSkinClassicDisplayReplay(); virtual ~cSkinClassicDisplayReplay();
@ -342,6 +362,7 @@ public:
virtual void SetCurrent(const char *Current); virtual void SetCurrent(const char *Current);
virtual void SetTotal(const char *Total); virtual void SetTotal(const char *Total);
virtual void SetJump(const char *Jump); virtual void SetJump(const char *Jump);
virtual void SetMessage(eMessageType Type, const char *Text);
virtual void Flush(void); virtual void Flush(void);
}; };
@ -350,6 +371,7 @@ cSkinClassicDisplayReplay::cSkinClassicDisplayReplay(bool ModeOnly)
const cFont *font = cFont::GetFont(fontOsd); const cFont *font = cFont::GetFont(fontOsd);
int lineHeight = font->Height(); int lineHeight = font->Height();
lastCurrentWidth = 0; lastCurrentWidth = 0;
message = false;
x0 = 0; x0 = 0;
x1 = Setup.OSDWidth; x1 = Setup.OSDWidth;
y0 = 0; y0 = 0;
@ -413,6 +435,20 @@ void cSkinClassicDisplayReplay::SetJump(const char *Jump)
osd->DrawText(x0 + (x1 - x0) / 4, y2, Jump, Theme.Color(clrReplayModeJump), Theme.Color(clrBackground), cFont::GetFont(fontOsd), (x1 - x0) / 2, 0, taCenter); osd->DrawText(x0 + (x1 - x0) / 4, y2, Jump, Theme.Color(clrReplayModeJump), Theme.Color(clrBackground), cFont::GetFont(fontOsd), (x1 - x0) / 2, 0, taCenter);
} }
void cSkinClassicDisplayReplay::SetMessage(eMessageType Type, const char *Text)
{
const cFont *font = cFont::GetFont(fontOsd);
if (Text) {
osd->SaveRegion(x0, y2, x1 - 1, y3 - 1);
osd->DrawText(x0, y2, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x1 - x0, y3 - y2, taCenter);
message = true;
}
else {
osd->RestoreRegion();
message = false;
}
}
void cSkinClassicDisplayReplay::Flush(void) void cSkinClassicDisplayReplay::Flush(void)
{ {
osd->Flush(); osd->Flush();

12
skins.h
View File

@ -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 1.2 2004/05/16 20:16:57 kls Exp $ * $Id: skins.h 1.3 2004/05/29 13:13:21 kls Exp $
*/ */
#ifndef __SKINS_H #ifndef __SKINS_H
@ -56,6 +56,11 @@ public:
virtual void SetEvents(const cEvent *Present, const cEvent *Following) = 0; virtual void SetEvents(const cEvent *Present, const cEvent *Following) = 0;
///< Sets the Present and Following EPG events. It either of these ///< Sets the Present and Following EPG events. It either of these
///< is not available, NULL will be given. ///< is not available, NULL will be given.
virtual void SetMessage(eMessageType Type, const char *Text) = 0;
///< Sets a one line message Text, with the given Type. Type can be used
///< to determine, e.g., the colors for displaying the Text.
///< If Text is NULL, any previously displayed message must be removed, and
///< any previous contents overwritten by the message must be restored.
/*TODO /*TODO
SetButtons SetButtons
Red = Video options Red = Video options
@ -202,6 +207,11 @@ public:
///< needs to be able to handle variations in the length of this ///< needs to be able to handle variations in the length of this
///< string, which will occur when the user enters an actual value. ///< string, which will occur when the user enters an actual value.
///< If Jump is NULL, the jump prompt shall be removed from the display. ///< If Jump is NULL, the jump prompt shall be removed from the display.
virtual void SetMessage(eMessageType Type, const char *Text) = 0;
///< Sets a one line message Text, with the given Type. Type can be used
///< to determine, e.g., the colors for displaying the Text.
///< If Text is NULL, any previously displayed message must be removed, and
///< any previous contents overwritten by the message must be restored.
}; };
class cSkinDisplayVolume : public cSkinDisplay { class cSkinDisplayVolume : public cSkinDisplay {

View File

@ -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 1.3 2004/05/29 09:56:22 kls Exp $ * $Id: skinsttng.c 1.4 2004/05/29 13:14:09 kls Exp $
*/ */
// Star Trek: The Next Generation® is a registered trademark of Paramount Pictures // Star Trek: The Next Generation® is a registered trademark of Paramount Pictures
@ -124,6 +124,7 @@ private:
bool withInfo; bool withInfo;
int lineHeight; int lineHeight;
tColor frameColor; tColor frameColor;
bool message;
const cEvent *present; const cEvent *present;
int lastSeen; int lastSeen;
static cBitmap bmTeletext, bmRadio, bmAudio, bmDolbyDigital, bmEncrypted, bmRecording; static cBitmap bmTeletext, bmRadio, bmAudio, bmDolbyDigital, bmEncrypted, bmRecording;
@ -132,6 +133,7 @@ public:
virtual ~cSkinSTTNGDisplayChannel(); virtual ~cSkinSTTNGDisplayChannel();
virtual void SetChannel(const cChannel *Channel, int Number); virtual void SetChannel(const cChannel *Channel, int Number);
virtual void SetEvents(const cEvent *Present, const cEvent *Following); virtual void SetEvents(const cEvent *Present, const cEvent *Following);
virtual void SetMessage(eMessageType Type, const char *Text);
virtual void Flush(void); virtual void Flush(void);
}; };
@ -150,6 +152,7 @@ cSkinSTTNGDisplayChannel::cSkinSTTNGDisplayChannel(bool WithInfo)
withInfo = WithInfo; withInfo = WithInfo;
lineHeight = font->Height(); lineHeight = font->Height();
frameColor = Theme.Color(clrChannelFrame); frameColor = Theme.Color(clrChannelFrame);
message = false;
if (withInfo) { if (withInfo) {
x0 = 0; x0 = 0;
x1 = x0 + font->Width("00:00") + 4; x1 = x0 + font->Width("00:00") + 4;
@ -251,7 +254,7 @@ void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Fo
return; return;
if (present != Present) if (present != Present)
lastSeen = -1; lastSeen = -1;
present = Present; present = Present;
osd->DrawRectangle(x0, y3, x1 - 1, y4 - 1, frameColor); osd->DrawRectangle(x0, y3, x1 - 1, y4 - 1, frameColor);
osd->DrawRectangle(x3, y3, x7 - 1, y4 - 1, Theme.Color(clrBackground)); osd->DrawRectangle(x3, y3, x7 - 1, y4 - 1, Theme.Color(clrBackground));
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
@ -264,13 +267,33 @@ void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Fo
} }
} }
void cSkinSTTNGDisplayChannel::SetMessage(eMessageType Type, const char *Text)
{
const cFont *font = cFont::GetFont(withInfo ? fontSml : fontOsd);
if (Text) {
int yt = withInfo ? y6 : y0;
int yb = withInfo ? y7 : y1;
osd->SaveRegion(x2, yt, x4 - 1, yb - 1);
if (withInfo)
osd->DrawRectangle(x2, yt, x3 - 1, yb - 1, Theme.Color(clrBackground));
osd->DrawText(x3, yt, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter);
message = true;
}
else {
osd->RestoreRegion();
message = false;
}
}
void cSkinSTTNGDisplayChannel::Flush(void) void cSkinSTTNGDisplayChannel::Flush(void)
{ {
if (withInfo) { if (withInfo) {
const char *date = DayDateTime(); if (!message) {
const cFont *font = cFont::GetFont(fontSml); const char *date = DayDateTime();
osd->DrawText(x4 - font->Width(date) - 2, y7 - font->Height(date), date, Theme.Color(clrChannelDate), frameColor, font); const cFont *font = cFont::GetFont(fontSml);
osd->DrawText(x4 - font->Width(date) - 2, y7 - font->Height(date), date, Theme.Color(clrChannelDate), frameColor, font);
}
int seen = 0; int seen = 0;
if (present) { if (present) {
time_t t = time(NULL); time_t t = time(NULL);
@ -576,6 +599,7 @@ private:
int y0, y1, y2, y3, y4, y5, y6, y7; int y0, y1, y2, y3, y4, y5, y6, y7;
tColor frameColor; tColor frameColor;
int lastCurrentWidth; int lastCurrentWidth;
bool message;
public: public:
cSkinSTTNGDisplayReplay(bool ModeOnly); cSkinSTTNGDisplayReplay(bool ModeOnly);
virtual ~cSkinSTTNGDisplayReplay(); virtual ~cSkinSTTNGDisplayReplay();
@ -585,6 +609,7 @@ public:
virtual void SetCurrent(const char *Current); virtual void SetCurrent(const char *Current);
virtual void SetTotal(const char *Total); virtual void SetTotal(const char *Total);
virtual void SetJump(const char *Jump); virtual void SetJump(const char *Jump);
virtual void SetMessage(eMessageType Type, const char *Text);
virtual void Flush(void); virtual void Flush(void);
}; };
@ -597,6 +622,7 @@ cSkinSTTNGDisplayReplay::cSkinSTTNGDisplayReplay(bool ModeOnly)
int lineHeight = font->Height(); int lineHeight = font->Height();
frameColor = Theme.Color(clrReplayFrame); frameColor = Theme.Color(clrReplayFrame);
lastCurrentWidth = 0; lastCurrentWidth = 0;
message = false;
cBitmap bm(play_xpm); cBitmap bm(play_xpm);
x0 = 0; x0 = 0;
x1 = max(SymbolWidth, bm.Width()); x1 = max(SymbolWidth, bm.Width());
@ -695,6 +721,21 @@ void cSkinSTTNGDisplayReplay::SetJump(const char *Jump)
osd->DrawText(x0 + (x4 - x0) / 4, y6, Jump, Theme.Color(clrReplayJump), frameColor, cFont::GetFont(fontSml), (x4 - x3) / 2, 0, taCenter); osd->DrawText(x0 + (x4 - x0) / 4, y6, Jump, Theme.Color(clrReplayJump), frameColor, cFont::GetFont(fontSml), (x4 - x3) / 2, 0, taCenter);
} }
void cSkinSTTNGDisplayReplay::SetMessage(eMessageType Type, const char *Text)
{
const cFont *font = cFont::GetFont(fontSml);
if (Text) {
osd->SaveRegion(x2, y6, x4 - 1, y7 - 1);
osd->DrawRectangle(x2, y6, x3 - 1, y7 - 1, Theme.Color(clrBackground));
osd->DrawText(x3, y6, Text, Theme.Color(clrMessageStatusFg + 2 * Type), Theme.Color(clrMessageStatusBg + 2 * Type), font, x4 - x3, 0, taCenter);
message = true;
}
else {
osd->RestoreRegion();
message = false;
}
}
void cSkinSTTNGDisplayReplay::Flush(void) void cSkinSTTNGDisplayReplay::Flush(void)
{ {
osd->Flush(); osd->Flush();