summaryrefslogtreecommitdiff
path: root/display.c
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2004-06-07 19:09:34 +0000
committerlordjaxom <lordjaxom>2004-06-07 19:09:34 +0000
commite0de96fc7168daeaf414fb6196e08969468427d2 (patch)
treede7f2dfb83796a7c77e5600a23b8b6b26f284796 /display.c
parent6094765d94e4caaf0813039dff826b731f277753 (diff)
downloadvdr-plugin-text2skin-e0de96fc7168daeaf414fb6196e08969468427d2.tar.gz
vdr-plugin-text2skin-e0de96fc7168daeaf414fb6196e08969468427d2.tar.bz2
- fixed Timebar which sometimes displayed something beyond 100%v0.0.2
- fixed scrolling in EPG detail display - added "MenuEventEndTime", "MenuEventVPSTime" and "MenuEventDate" - added "DateTimeF" and "MenuEventDateTimeF" for free formattable dates - added parameter format that holds the format string for the above items - implemented setup menu to flush image cache
Diffstat (limited to 'display.c')
-rw-r--r--display.c75
1 files changed, 61 insertions, 14 deletions
diff --git a/display.c b/display.c
index 93ccb32..c823838 100644
--- a/display.c
+++ b/display.c
@@ -1,17 +1,17 @@
/*
- * $Id: display.c,v 1.12 2004/06/05 18:04:29 lordjaxom Exp $
+ * $Id: display.c,v 1.15 2004/06/07 19:08:42 lordjaxom Exp $
*/
#include "render.h"
#include "data.h"
-#include "i18n.h"
+#include "loader.h"
#include "display.h"
// --- cText2SkinDisplayChannel -----------------------------------------------
-cText2SkinDisplayChannel::cText2SkinDisplayChannel(cText2SkinData *Data, cText2SkinI18n *I18n, cText2SkinTheme *Theme, bool WithInfo) {
+cText2SkinDisplayChannel::cText2SkinDisplayChannel(cText2SkinLoader *Loader, bool WithInfo) {
mWithInfo = WithInfo;
- mRender = new cText2SkinRender(Data, I18n, Theme, WithInfo ? sectionChannel : sectionChannelSmall);
+ mRender = new cText2SkinRender(Loader, WithInfo ? sectionChannel : sectionChannelSmall);
mDirty = false;
}
@@ -20,28 +20,34 @@ cText2SkinDisplayChannel::~cText2SkinDisplayChannel() {
}
void cText2SkinDisplayChannel::SetChannel(const cChannel *Channel, int Number) {
+ mRender->Lock();
if (mRender->mChannel != Channel || mRender->mChannelNumber != Number) {
mRender->mChannel = Channel;
mRender->mChannelNumber = Number;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following) {
+ mRender->Lock();
if (mRender->mChannelPresent != Present || mRender->mChannelFollowing != Following) {
mRender->mChannelPresent = Present;
mRender->mChannelFollowing = Following;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayChannel::SetMessage(eMessageType Type, const char *Text) {
if (Text == NULL) Text = "";
+ mRender->Lock();
if (mRender->mMessageType != Type || mRender->mMessageText != Text) {
mRender->mMessageType = Type;
mRender->mMessageText = Text;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayChannel::Flush(void) {
@@ -53,8 +59,8 @@ void cText2SkinDisplayChannel::Flush(void) {
// --- cText2SkinDisplayVolume ------------------------------------------------
-cText2SkinDisplayVolume::cText2SkinDisplayVolume(cText2SkinData *Data, cText2SkinI18n *I18n, cText2SkinTheme *Theme) {
- mRender = new cText2SkinRender(Data, I18n, Theme, sectionVolume);
+cText2SkinDisplayVolume::cText2SkinDisplayVolume(cText2SkinLoader *Loader) {
+ mRender = new cText2SkinRender(Loader, sectionVolume);
mDirty = false;
}
@@ -63,12 +69,14 @@ cText2SkinDisplayVolume::~cText2SkinDisplayVolume() {
}
void cText2SkinDisplayVolume::SetVolume(int Current, int Total, bool Mute) {
+ mRender->Lock();
if (mRender->mVolumeCurrent != Current || mRender->mVolumeTotal != Total || mRender->mVolumeMute != Mute) {
mRender->mVolumeCurrent = Current;
mRender->mVolumeTotal = Total;
mRender->mVolumeMute = Mute;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayVolume::Flush(void) {
@@ -80,9 +88,9 @@ void cText2SkinDisplayVolume::Flush(void) {
// --- cText2SkinDisplayReplay ------------------------------------------------
-cText2SkinDisplayReplay::cText2SkinDisplayReplay(cText2SkinData *Data, cText2SkinI18n *I18n, cText2SkinTheme *Theme, bool ModeOnly) {
+cText2SkinDisplayReplay::cText2SkinDisplayReplay(cText2SkinLoader *Loader, bool ModeOnly) {
Dprintf("ModeOnly: %d\n", ModeOnly);
- mRender = new cText2SkinRender(Data, I18n, Theme, ModeOnly ? sectionReplayMode : sectionReplay);
+ mRender = new cText2SkinRender(Loader, ModeOnly ? sectionReplayMode : sectionReplay);
mDirty = false;
}
@@ -92,67 +100,83 @@ cText2SkinDisplayReplay::~cText2SkinDisplayReplay() {
void cText2SkinDisplayReplay::SetTitle(const char *Title) {
if (Title == NULL) Title = "";
+ mRender->Lock();
if (mRender->mReplayTitle != Title) {
mRender->mReplayTitle = Title;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
+ mRender->Lock();
if (mRender->mReplayPlay != Play || mRender->mReplayForward != Forward || mRender->mReplaySpeed != Speed) {
mRender->mReplayPlay = Play;
mRender->mReplayForward = Forward;
mRender->mReplaySpeed = Speed;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetProgress(int Current, int Total) {
+ mRender->Lock();
if (mRender->mReplayCurrent != Current || mRender->mReplayTotal != Total) {
mRender->mReplayCurrent = Current;
mRender->mReplayTotal = Total;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetMarks(const cMarks *Marks) {
+ mRender->Lock();
if (mRender->mReplayMarks != Marks) {
mRender->mReplayMarks = Marks;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetCurrent(const char *Current) {
if (Current == NULL) Current = "";
+ mRender->Lock();
if (mRender->mReplayCurrentText != Current) {
mRender->mReplayCurrentText = Current;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetTotal(const char *Total) {
if (Total == NULL) Total = "";
+ mRender->Lock();
if (mRender->mReplayTotalText != Total) {
mRender->mReplayTotalText = Total;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetJump(const char *Jump) {
if (Jump == NULL) Jump = "";
+ mRender->Lock();
if (mRender->mReplayJump != Jump) {
mRender->mReplayJump = Jump;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::SetMessage(eMessageType Type, const char *Text) {
if (Text == NULL) Text = "";
+ mRender->Lock();
if (mRender->mMessageType != Type || mRender->mMessageText != Text) {
mRender->mMessageType = Type;
mRender->mMessageText = Text;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayReplay::Flush(void) {
@@ -164,8 +188,8 @@ void cText2SkinDisplayReplay::Flush(void) {
// --- cText2SkinDisplayMessage -----------------------------------------------
-cText2SkinDisplayMessage::cText2SkinDisplayMessage(cText2SkinData *Data, cText2SkinI18n *I18n, cText2SkinTheme *Theme) {
- mRender = new cText2SkinRender(Data, I18n, Theme, sectionMessage);
+cText2SkinDisplayMessage::cText2SkinDisplayMessage(cText2SkinLoader *Loader) {
+ mRender = new cText2SkinRender(Loader, sectionMessage);
mDirty = false;
}
@@ -175,11 +199,13 @@ cText2SkinDisplayMessage::~cText2SkinDisplayMessage() {
void cText2SkinDisplayMessage::SetMessage(eMessageType Type, const char *Text) {
if (Text == NULL) Text = "";
+ mRender->Lock();
if (mRender->mMessageType != Type || mRender->mMessageText != Text) {
mRender->mMessageType = Type;
mRender->mMessageText = Text;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMessage::Flush(void) {
@@ -191,13 +217,13 @@ void cText2SkinDisplayMessage::Flush(void) {
// --- cText2SkinDisplayMenu --------------------------------------------------
-cText2SkinDisplayMenu::cText2SkinDisplayMenu(cText2SkinData *Data, cText2SkinI18n *I18n, cText2SkinTheme *Theme) {
- mRender = new cText2SkinRender(Data, I18n, Theme, sectionMenu);
+cText2SkinDisplayMenu::cText2SkinDisplayMenu(cText2SkinLoader *Loader) {
+ mRender = new cText2SkinRender(Loader, sectionMenu);
mDirty = false;
mMaxItems = 0;
- cText2SkinItem *area = Data->Get(sectionMenu, itemMenuArea);
- cText2SkinItem *item = Data->Get(sectionMenu, itemMenuItem);
+ cText2SkinItem *area = Loader->Data()->Get(sectionMenu, itemMenuArea);
+ cText2SkinItem *item = Loader->Data()->Get(sectionMenu, itemMenuItem);
if (area && item)
mMaxItems = area->Size().h / item->Size().h;
else
@@ -209,6 +235,7 @@ cText2SkinDisplayMenu::~cText2SkinDisplayMenu() {
}
void cText2SkinDisplayMenu::Clear(void) {
+ mRender->Lock();
mRender->mMenuItems.clear();
mRender->mMenuTitle = "";
mRender->mMenuCurrent = -1;
@@ -219,15 +246,19 @@ void cText2SkinDisplayMenu::Clear(void) {
mRender->mMenuEvent = NULL;
mRender->mMenuRecording = NULL;
mRender->mMenuText = "";
+ DELETENULL(mRender->mScroller);
+ mRender->Unlock();
mDirty = true;
}
void cText2SkinDisplayMenu::SetTitle(const char *Title) {
if (Title == NULL) Title = "";
+ mRender->Lock();
if (mRender->mMenuTitle != Title) {
mRender->mMenuTitle = Title;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) {
@@ -235,6 +266,7 @@ void cText2SkinDisplayMenu::SetButtons(const char *Red, const char *Green, const
if (Green == NULL) Green = "";
if (Yellow == NULL) Yellow = "";
if (Blue == NULL) Blue = "";
+ mRender->Lock();
if (mRender->mMenuRed != Red || mRender->mMenuGreen != Green || mRender->mMenuYellow != Yellow || mRender->mMenuBlue != Blue) {
mRender->mMenuRed = Red;
mRender->mMenuGreen = Green;
@@ -242,15 +274,18 @@ void cText2SkinDisplayMenu::SetButtons(const char *Red, const char *Green, const
mRender->mMenuBlue = Blue;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetMessage(eMessageType Type, const char *Text) {
if (Text == NULL) Text = "";
+ mRender->Lock();
if (mRender->mMessageType != Type || mRender->mMessageText != Text) {
mRender->mMessageType = Type;
mRender->mMessageText = Text;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) {
@@ -265,6 +300,7 @@ void cText2SkinDisplayMenu::SetItem(const char *Text, int Index, bool Current, b
break;
}
SetEditableWidth(mRender->GetEditableWidth(item, Current));
+ mRender->Lock();
if ((int)mRender->mMenuItems.size() <= Index) {
mRender->mMenuItems.push_back(item);
mDirty = true;
@@ -276,48 +312,59 @@ void cText2SkinDisplayMenu::SetItem(const char *Text, int Index, bool Current, b
mRender->mMenuCurrent = Index;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetEvent(const cEvent *Event) {
+ mRender->Lock();
if (mRender->mMenuEvent != Event) {
mRender->mMenuEvent = Event;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetRecording(const cRecording *Recording) {
+ mRender->Lock();
if (mRender->mMenuRecording != Recording) {
mRender->mMenuRecording = Recording;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetText(const char *Text, bool FixedFont) {
if (Text == NULL) Text = "";
+ mRender->Lock();
if (mRender->mMenuText != Text || mRender->mMenuTextFixedFont != FixedFont) {
mRender->mMenuText = Text;
mRender->mMenuTextFixedFont = FixedFont;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5) {
cSkinDisplayMenu::SetTabs(Tab1, Tab2, Tab3, Tab4, Tab5);
+ mRender->Lock();
mRender->mMenuTabs[0] = Tab(0);
mRender->mMenuTabs[1] = Tab(1);
mRender->mMenuTabs[2] = Tab(2);
mRender->mMenuTabs[3] = Tab(3);
mRender->mMenuTabs[4] = Tab(4);
mRender->mMenuTabs[5] = Tab(5);
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::Scroll(bool Up, bool Page) {
+ mRender->Lock();
if (mRender->mScroller && (Up ? mRender->mScroller->CanScrollUp() : mRender->mScroller->CanScrollDown())) {
mRender->mMenuScroll = true;
mRender->mMenuScrollUp = Up;
mRender->mMenuScrollPage = Page;
mDirty = true;
}
+ mRender->Unlock();
}
void cText2SkinDisplayMenu::Flush(void) {