Go to the documentation of this file.
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++)
104 tabs[i] *= AvgCharWidth();
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);
159 for (
const cMark *m = Marks->First(); m; m = Marks->
Next(m)) {
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);
234 for (
cSkin *Skin = First(); Skin; Skin =
Next(Skin)) {
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");
256 dsyslog(
"cSkins::Message(%d, \"%s\", %d) called from background thread - ignored! (Use cSkins::QueueMessage() instead)", Type, s, Seconds);
267 if (!cSkinDisplay::Current()) {
273 cSkinDisplay::Current()->Flush();
284 cSkinDisplay::Current()->SetMessage(Type, NULL);
299 dsyslog(
"cSkins::QueueMessage() called with mtStatus - ignored!");
312 dsyslog(
"cSkins::QueueMessage() called with empty message from main thread - ignored!");
318 dsyslog(
"cSkins::QueueMessage() called from main thread with Timeout = %d - ignored!", Timeout);
339 if (m->state == 0 && m->timeout == -1)
355 dsyslog(
"cSkins::ProcessQueuedMessages() called from background thread - ignored!");
380 if (msg->
state == 1) {
393 if (m && m->
state == 2) {
404 if (cSkinDisplay::Current())
405 cSkinDisplay::Current()->Flush();
virtual void SetMessage(eMessageType Type, const char *Text)=0
Sets a one line message Text, with the given Type.
static cString sprintf(const char *fmt,...) __attribute__((format(printf
cSkinDisplayChannel(void)
virtual void SetPositioner(const cPositioner *Positioner)
Sets the Positioner used to move the satellite dish.
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...
virtual void SetMarks(const cMarks *Marks)
Sets the editing marks to Marks, which shall be used to display the progress bar through a cProgressB...
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...
static void MsgOsdStatusMessage(const char *Message)
const cPositioner * positioner
< This class is used to display the current channel, together with the present and following EPG even...
void Add(cListObject *Object, cListObject *After=NULL)
const char * Title(char Delimiter=' ', bool NewIndicator=false, int Level=-1) const
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.
static tThreadId ThreadId(void)
void Scroll(bool Up, bool Page)
static void Save(const char *SkinName, cTheme *Theme)
A steerable satellite dish generally points to the south on the northern hemisphere,...
static void MsgOsdClear(void)
cSkinQueuedMessage(eMessageType Type, const char *s, int Seconds, int Timeout)
virtual void SetRecording(const cRecording *Recording)
Sets the recording that is currently being played.
virtual ~cSkinQueuedMessage()
cSkin(const char *Name, cTheme *Theme=NULL)
Creates a new skin class, with the given Name and Theme.
static cSkinDisplay * current
static tThreadId IsMainThread(void)
void Mark(int x, bool Start, bool Current, tColor ColorMark, tColor ColorCurrent)
virtual void Clear(void)
Free up all registered skins.
virtual void SetTitle(const char *Title)=0
Sets the title of the recording.
void ProcessQueuedMessages(void)
Processes the first queued message, if any.
const cMarks * marks
< This class implements the progress display used during replay of a recording.
cSkinDisplayMessage * displayMessage
cList< cSkinQueuedMessage > SkinQueuedMessages
bool TimedWait(cMutex &Mutex, int TimeoutMs)
const T * Next(const T *Object) const
< Returns the element immediately before Object in this list, or NULL if Object is the first element ...
eKeys Wait(int Seconds=0, bool KeepChar=false)
void Flush(void)
Flushes the currently active cSkinDisplay, if any.
cProgressBar(int Width, int Height, int Current, int Total, const cMarks *Marks, tColor ColorSeen, tColor ColorRest, tColor ColorSelected, tColor ColorMark, tColor ColorCurrent)
virtual void SetMessage(eMessageType Type, const char *Text)=0
< This class implements a simple message display.
bool SetCurrent(const char *Name=NULL)
Sets the current skin to the one indicated by name.