summaryrefslogtreecommitdiff
path: root/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'status.c')
-rw-r--r--status.c92
1 files changed, 60 insertions, 32 deletions
diff --git a/status.c b/status.c
index 9155bf6..0616f7a 100644
--- a/status.c
+++ b/status.c
@@ -134,18 +134,56 @@ void cText2SkinStatus::OsdClear(void)
mLastLanguage = Setup.OSDLanguage;
cxString::Reparse();
}
+
+ if (mRender != NULL)
+ {
+ mRender->mMenuScrollbar.total = 0;
+ }
}
void cText2SkinStatus::OsdCurrentItem(const char *Text)
{
if (mRender != NULL)
{
+ // update infos
+ cText2SkinRender::tUpdate *u = &mRender->mUpdate;
static std::string lastItem;
- lastItem = mRender->mUpdate.currentItem;
- mRender->mUpdate.currentItem = Text;
- mRender->mUpdate.resetMarquee = true;
- mRender->mUpdate.foundFirstItem = false;
+ lastItem = u->currentItem;
+ u->currentItem = Text;
+ u->resetMarquee = true;
+ u->foundFirstItem = false;
+
+ // find current item in scrollbar
+ cText2SkinRender::tMenuScrollbar *sb = &mRender->mMenuScrollbar;
+ for (int i = 0; i < sb->total; i++)
+ {
+ if (sb->items[i] == Text)
+ {
+ sb->current = i;
+ break;
+ }
+ }
+ }
+}
+
+void cText2SkinStatus::OsdItem(const char *Text, int Index)
+{
+ if (mRender != NULL)
+ {
+ cText2SkinRender::tMenuScrollbar *sb = &mRender->mMenuScrollbar;
+
+ if ((unsigned int)Index < sb->items.size())
+ {
+ sb->items[Index] = Text;
+ }
+ else
+ {
+ sb->items.push_back(Text);
+ sb->total = Index + 1;
+ }
+
+ if (Index + 1 > sb->total) sb->total = Index + 1;
}
}
@@ -155,31 +193,21 @@ void cText2SkinStatus::UpdateEvents(void)
{
mRender->mUpdate.events = false;
- mEvents.clear();
+ mEvents.Clear();
Timers.IncBeingEdited();
- for (cTimer *tim = Timers.First(); tim != NULL; tim = Timers.Next(tim))
+ for (cTimer *tim = Timers.First(); tim; tim = Timers.Next(tim))
{
if (tim->HasFlags(tfActive))
{
int i = 0;
cTimer dummy;
- dummy = *tim; // copy the timer
+ dummy = *tim;
do
{
- tEvent ev;
+ mEvents.Add(new tEvent(&dummy));
- ev.title = dummy.File();
- ev.isRecording = dummy.Recording();
- ev.channelName = dummy.Channel()->Name();
- ev.channelNumber = dummy.Channel()->Number();
- ev.startTime = dummy.StartTime();
- ev.stopTime = dummy.StopTime();
- ev.priority = dummy.Priority();
-
- mEvents.push_back(ev);
-
if (!dummy.IsSingleEvent()) // add 4 additional rep. timer
{
do
@@ -195,13 +223,13 @@ void cText2SkinStatus::UpdateEvents(void)
}
Timers.DecBeingEdited();
- std::sort(mEvents.rbegin(), mEvents.rend());
+ mEvents.Sort();
}
}
cxType cText2SkinStatus::GetTokenData(const txToken &Token)
{
- uint event = 0;
+ int event = 0;
switch (Token.Type) {
case tReplayMode:
@@ -213,8 +241,8 @@ cxType cText2SkinStatus::GetTokenData(const txToken &Token)
event++;
case tCurrentEventsTitle1:
UpdateEvents();
- return mEvents.size() > event
- ? (cxType)mEvents[event].title.c_str()
+ return mEvents.Count() > event
+ ? (cxType)mEvents.Get(event)->title.c_str()
: (cxType)false;
case tCurrentEventsStartDateTime3:
@@ -223,8 +251,8 @@ cxType cText2SkinStatus::GetTokenData(const txToken &Token)
event++;
case tCurrentEventsStartDateTime1:
UpdateEvents();
- return mEvents.size() > event
- ? (cxType)TimeType(mEvents[event].startTime, Token.Attrib.Text)
+ return mEvents.Count() > event
+ ? (cxType)TimeType(mEvents.Get(event)->startTime, Token.Attrib.Text)
: (cxType)false;
case tCurrentEventsStopDateTime3:
@@ -233,8 +261,8 @@ cxType cText2SkinStatus::GetTokenData(const txToken &Token)
event++;
case tCurrentEventsStopDateTime1:
UpdateEvents();
- return mEvents.size() > event
- ? (cxType)TimeType(mEvents[event].stopTime, Token.Attrib.Text)
+ return mEvents.Count() > event
+ ? (cxType)TimeType(mEvents.Get(event)->stopTime, Token.Attrib.Text)
: (cxType)false;
case tCurrentEventsChannelNumber3:
@@ -243,8 +271,8 @@ cxType cText2SkinStatus::GetTokenData(const txToken &Token)
event++;
case tCurrentEventsChannelNumber1:
UpdateEvents();
- return mEvents.size() > event
- ? (cxType)mEvents[event].channelNumber
+ return mEvents.Count() > event
+ ? (cxType)mEvents.Get(event)->channelNumber
: (cxType)false;
case tCurrentEventsChannelName3:
@@ -253,8 +281,8 @@ cxType cText2SkinStatus::GetTokenData(const txToken &Token)
event++;
case tCurrentEventsChannelName1:
UpdateEvents();
- return mEvents.size() > event
- ? (cxType)mEvents[event].channelName.c_str()
+ return mEvents.Count() > event
+ ? (cxType)mEvents.Get(event)->channelName.c_str()
: (cxType)false;
case tCurrentEventsIsRecording3:
@@ -263,8 +291,8 @@ cxType cText2SkinStatus::GetTokenData(const txToken &Token)
event++;
case tCurrentEventsIsRecording1:
UpdateEvents();
- return mEvents.size() > event
- ? (cxType)mEvents[event].isRecording
+ return mEvents.Count() > event
+ ? (cxType)mEvents.Get(event)->isRecording
: (cxType)false;
case tTimerConflict: