diff options
author | lordjaxom <lordjaxom> | 2004-06-07 19:09:34 +0000 |
---|---|---|
committer | lordjaxom <lordjaxom> | 2004-06-07 19:09:34 +0000 |
commit | e0de96fc7168daeaf414fb6196e08969468427d2 (patch) | |
tree | de7f2dfb83796a7c77e5600a23b8b6b26f284796 /display.c | |
parent | 6094765d94e4caaf0813039dff826b731f277753 (diff) | |
download | vdr-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.c | 75 |
1 files changed, 61 insertions, 14 deletions
@@ -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) { |