100 tabs[3] = Tab3 ?
tabs[2] + Tab3 : 0;
101 tabs[4] = Tab4 ?
tabs[3] + Tab4 : 0;
102 tabs[5] = Tab5 ?
tabs[4] + Tab5 : 0;
103 for (
int i = 1; i <
MaxTabs; i++)
116 static char buffer[1000];
118 const char *b = strchrnul(a,
'\t');
119 while (*b && Tab-- > 0) {
121 b = strchrnul(a,
'\t');
124 return (Tab <= 0) ? a : NULL;
125 unsigned int n = b - a;
126 if (n >=
sizeof(buffer))
127 n =
sizeof(buffer) - 1;
128 strncpy(buffer, a, n);
154 int p =
Pos(Current);
160 int p1 =
Pos(m->Position());
167 Mark(p1, Start, m->Position() ==
Current, ColorMark, ColorCurrent);
176 DrawRectangle(x, 0, x, Height() - 1, ColorMark);
177 const int d = Height() / (Current ? 3 : 9);
178 for (
int i = 0; i < d; i++) {
179 int h = Start ? i : Height() - 1 - i;
180 DrawRectangle(x - d + i, h, x + d - i, h, Current ? ColorCurrent : ColorMark);
235 if (strcmp(Skin->Name(), Name) == 0) {
236 isyslog(
"setting current skin to \"%s\"", Name);
244 isyslog(
"skin \"%s\" not available - using \"%s\" instead", Name,
current->Name());
246 esyslog(
"ERROR: no skin available");
253 dsyslog(
"cSkins::Message() called from background thread - ignored! (Use cSkins::QueueMessage() instead)");
296 dsyslog(
"cSkins::QueueMessage() called with mtStatus - ignored!");
309 dsyslog(
"cSkins::QueueMessage() called with empty message from main thread - ignored!");
315 dsyslog(
"cSkins::QueueMessage() called from main thread with Timeout = %d - ignored!", Timeout);
320 SkinQueuedMessages.
Add(m);
336 if (m->state == 0 && m->timeout == -1)
352 dsyslog(
"cSkins::ProcessQueuedMessages() called from background thread - ignored!");
369 if (msg->
state == 1) {
382 if (m && m->
state == 2) {
383 SkinQueuedMessages.
Del(m);
static int AvgCharWidth(void)
Returns the average width of a character in pixel (just a raw estimate).
void Add(cListObject *Object, cListObject *After=NULL)
const char * Title(char Delimiter= ' ', bool NewIndicator=false, int Level=-1) const
static cString sprintf(const char *fmt,...) __attribute__((format(printf
int TargetLongitude(void) const
Returns the longitude the dish is supposed to be moved to.
int QueueMessage(eMessageType Type, const char *s, int Seconds=0, int Timeout=0)
Like Message(), but this function may be called from a background thread.
void ProcessQueuedMessages(void)
Processes the first queued message, if any.
const cPositioner * positioner
< This class is used to display the current channel, together with the present and following EPG even...
static tThreadId IsMainThread(void)
cSkinDisplayMessage * displayMessage
cSkinDisplayChannel(void)
static cSkinDisplay * Current(void)
Returns the currently active cSkinDisplay.
cSkinQueuedMessage(eMessageType Type, const char *s, int Seconds, int Timeout)
cProgressBar(int Width, int Height, int Current, int Total, const cMarks *Marks, tColor ColorSeen, tColor ColorRest, tColor ColorSelected, tColor ColorMark, tColor ColorCurrent)
virtual void SetRecording(const cRecording *Recording)
Sets the recording that is currently being played.
cList< cSkinQueuedMessage > SkinQueuedMessages
void Scroll(bool Up, bool Page)
static cSkinDisplay * current
A steerable satellite dish generally points to the south on the northern hemisphere, and to the north on the southern hemisphere (unless you're located directly on the equator, in which case the general direction is "up").
virtual void SetMarks(const cMarks *Marks)
Sets the editing marks to Marks, which shall be used to display the progress bar through a cProgressB...
eKeys Wait(int Seconds=0, bool KeepChar=false)
T * Next(const T *object) const
static void Save(const char *SkinName, cTheme *Theme)
virtual void Flush(void)
Actually draws the OSD display to the output device.
static void MsgOsdStatusMessage(const char *Message)
virtual void Clear(void)
Free up all registered skins.
cSkin(const char *Name, cTheme *Theme=NULL)
Creates a new skin class, with the given Name and Theme.
void Flush(void)
Flushes the currently active cSkinDisplay, if any.
void DrawRectangle(int x1, int y1, int x2, int y2, tColor Color)
Draws a filled rectangle defined by the upper left (x1, y1) and lower right (x2, y2) corners with the...
virtual void SetMessage(eMessageType Type, const char *Text)=0
Sets a one line message Text, with the given Type.
static tThreadId ThreadId(void)
bool TimedWait(cMutex &Mutex, int TimeoutMs)
eKeys Message(eMessageType Type, const char *s, int Seconds=0)
Displays the given message, either through a currently visible display object that is capable of doin...
void Del(cListObject *Object, bool DeleteObject=true)
static void MsgOsdClear(void)
virtual void SetPositioner(const cPositioner *Positioner)
Sets the Positioner used to move the satellite dish.
void Mark(int x, bool Start, bool Current, tColor ColorMark, tColor ColorCurrent)
const cMarks * marks
< This class implements the progress display used during replay of a recording.
virtual void SetTitle(const char *Title)=0
Sets the title of the recording.
cSkin * Current(void)
Returns a pointer to the current skin.
virtual void SetMessage(eMessageType Type, const char *Text)
Sets a one line message Text, with the given Type.
T * Prev(const T *object) const
bool SetCurrent(const char *Name=NULL)
Sets the current skin to the one indicated by name.
virtual ~cSkinQueuedMessage()