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:
parent
a4bdc1ada3
commit
6b60a35f8d
@ -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'
|
||||||
|
6
HISTORY
6
HISTORY
@ -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).
|
||||||
|
@ -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
12
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 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 {
|
||||||
|
53
skinsttng.c
53
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 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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user