source: titan/titan/infobar.h @ 12159

Last change on this file since 12159 was 12159, checked in by gost, 12 years ago

[titan] seek TS one Step, skipwith FF several seconds

File size: 9.3 KB
Line 
1#ifndef INFOBAR_H
2#define INFOBAR_H
3
4void screeninfobar()
5{
6        int rcret = 0, ret = 0, infobartimeout = 0, rcwait = 1000, count = 0;
7        struct skin* infobar1 = getscreen("infobar");
8        struct skin* infobar2 = getscreen("infobar2");
9        struct skin* infobar = infobar1;
10        struct skin* standbymenu = NULL;
11        char* tmpstr = NULL; char* tmpnr = NULL;
12
13        status.mute = 0;
14        status.infobar = 2;
15
16        addrc(getrcconfigint("rcvolup", NULL), screenvolumeup, NULL, NULL);
17        addrc(getrcconfigint("rcvoldown", NULL), screenvolumedown, NULL, NULL);
18        addrc(getrcconfigint("rcmute", NULL), screenmute, NULL, NULL);
19
20        while(1)
21        {
22                if(status.standby == 1)
23                        screenstandby();
24                if(status.infobar == 1)
25                {
26                        rcret = waitrc(infobar, 1000, 0);
27                        infobartimeout++;
28                }
29                else if(status.infobar == 2)
30                {
31                        if(getconfigint("infobarsleep", NULL) > 0)
32                                rcret = waitrc(infobar, getconfigint("infobarsleep", NULL) * 1000, 0);
33                        else
34                                rcret = RCTIMEOUT;
35                        if(rcret == RCTIMEOUT)
36                        {
37                                status.infobar = 1;
38                                infobar = infobar1;
39                                drawscreen(infobar, 0);
40                                continue;
41                        }
42                        else
43                                status.infobar = 0;
44                }
45                else
46                {
47                        int screensaver_delay = getconfigint("screensaver_delay", NULL);
48                        rcret = 0; count = 0; rcwait = 1000;
49                        if(status.servicetype == 1 && getconfigint("screensaver", NULL) == 1)
50                                initscreensaver();
51                        if(screensaver == NULL) rcwait = 0;
52                        while(rcret == 0 || rcret == RCTIMEOUT)
53                        {
54                                rcret = waitrc(infobar, rcwait, 0);
55                                count++;
56                                if(rcret == RCTIMEOUT && screensaver != NULL && count > screensaver_delay)
57                                {
58                                        if(status.aktservice->channel != NULL)
59                                                screensaver->value = ostrcat(status.aktservice->channel->name, NULL, 0, 0);
60                                        else
61                                                screensaver->value = ostrcat("Radio", NULL, 0, 0);
62                                        showscreensaver();
63                                        free(screensaver->value);
64                                        rcwait = screensaver->speed;
65                                }
66                        }
67                        deinitscreensaver();
68                        drawscreen(skin, 0);
69                        infobartimeout = 0;
70                }
71
72                if(rcret == getrcconfigint("rcpause", NULL))
73                {
74                        //timeshift
75                        timeshiftpause();
76                        continue;
77                }
78                if(status.timeshift == 1)
79                {
80                        if(rcret == getrcconfigint("rcstop", NULL))
81                        {
82                                timeshiftstop(0);
83                                continue;
84                        }
85                        if(rcret == getrcconfigint("rcplay", NULL))
86                        {
87                                timeshiftplay();
88                                continue;
89                        }
90                        //TODO: ff, fr, seek
91                        if(rcret == getrcconfigint("rcff", NULL))
92                        {
93                                timeshiftff();
94                                continue;
95                        }
96                        if(rcret == getrcconfigint("rcfr", NULL))
97                        {
98                                continue;
99                        }
100                }
101                if(rcret == getrcconfigint("rcblue", NULL) && getconfig("bluekey", NULL) == NULL)
102                        rcret = getrcconfigint("rctvradio", NULL);
103                if(rcret == getrcconfigint("rcok", NULL) || rcret == getrcconfigint("rcup", NULL) || rcret == getrcconfigint("rcdown", NULL) || rcret == getrcconfigint("rctvradio", NULL) || rcret == getrcconfigint("rcfav", NULL))
104                {
105                        int tmpservicetype = status.servicetype;
106                        subtitlepause(1);
107                        clearscreen(infobar);
108                        if(rcret == getrcconfigint("rctvradio", NULL))
109                        {
110                                if(status.servicetype == 0)
111                                        status.servicetype = 1;
112                                else
113                                        status.servicetype = 0;
114                        }
115                        drawscreen(skin, 0);
116                        if(rcret == getrcconfigint("rcfav", NULL))     
117                                ret = screenchannellist(NULL, NULL, 2);
118                        else
119                                ret = screenchannellist(NULL, NULL, 0);
120                        if(ret >= 20 || ret < 0)
121                                status.servicetype = tmpservicetype;
122                        drawscreen(skin, 0);
123                        status.infobar = 2;
124                        continue;
125                }
126                if(rcret == getrcconfigint("rcexit", NULL))
127                {
128                        subtitlepause(1);
129                        status.infobar = 0;
130                        clearscreen(infobar);
131                        drawscreen(skin, 0);
132                        subtitlepause(0);
133                        continue;
134                }
135                if(rcret == getrcconfigint("rctext", NULL))
136                {
137                        if(status.aktservice->channel != NULL && status.aktservice->channel->txtpid > 0)
138                        {
139                                subtitlepause(1);
140                                status.infobar = 0;
141                                status.sec = 0;
142                                clearscreen(infobar);
143                                tmpstr = ostrcat(getconfig("tuxtxtfile", NULL), " ", 0, 0);
144                                tmpnr = oitoa(status.aktservice->channel->txtpid);
145                                tmpstr = ostrcat(tmpstr, tmpnr, 1, 1);
146                                drawscreen(skin, 0);
147                                system(tmpstr);
148                                free(tmpstr); tmpstr = NULL; tmpnr = NULL;
149                                drawscreen(skin, 0);
150                                subtitlepause(0);
151                        }
152                        continue;
153                }
154                if(rcret == getrcconfigint("rcrecord", NULL))
155                {
156                        subtitlepause(1);
157                        status.infobar = 0;
158                        clearscreen(infobar);
159                        screenrecorddirect();
160                        status.updatevfd = START;
161                        drawscreen(skin, 0);
162                        subtitlepause(0);
163                        continue;
164                }
165                if(status.timeshift == 0 && (rcret == getrcconfigint("rcplay", NULL) || rcret == getrcconfigint("rcarchive", NULL)))
166                {
167                        subtitlepause(1);
168                        status.infobar = 0;
169                        clearscreen(infobar);
170                        screenplay(1, 0);
171                        status.updatevfd = START;
172                        drawscreen(skin, 0);
173                        subtitlepause(0);
174                        continue;
175                }
176                if(rcret == getrcconfigint("rcred", NULL))
177                {
178                        subtitlepause(1);
179                        status.infobar = 0;
180                        clearscreen(infobar);
181                        screenkeyactions(1, 0);
182                        status.updatevfd = START;
183                        drawscreen(skin, 0);
184                        subtitlepause(0);
185                        continue;
186                }
187                if(rcret == getrcconfigint("rcgreen", NULL))
188                {
189                        subtitlepause(1);
190                        status.infobar = 0;
191                        clearscreen(infobar);
192                        screenvideomode();
193                        drawscreen(skin, 0);
194                        subtitlepause(0);
195                        continue;
196                }
197                if(rcret == getrcconfigint("rcsubchannel", NULL))
198                {
199                        subtitlepause(1);
200                        status.infobar = 0;
201                        clearscreen(infobar);
202                        screenlinkedchannel();
203                        drawscreen(skin, 0);
204                        subtitlepause(0);
205                        continue;
206                }
207                if(rcret == getrcconfigint("rcsubtitel", NULL))
208                {
209                        subtitlepause(1);
210                        status.infobar = 0;
211                        clearscreen(infobar);
212                        screensubtitle();
213                        drawscreen(skin, 0);
214                        subtitlepause(0);
215                        continue;
216                }
217                if(rcret == getrcconfigint("rcyellow", NULL))
218                {
219                        subtitlepause(1);
220                        status.infobar = 0;
221                        clearscreen(infobar);
222                        screenaudiotrack();
223                        drawscreen(skin, 0);
224                        subtitlepause(0);
225                        continue;
226                }
227                if(rcret == getrcconfigint("rcblue", NULL))
228                {
229                        subtitlepause(1);
230                        status.infobar = 0;
231                        clearscreen(infobar);
232                        screenkeyactions(0, 0);
233                        status.updatevfd = START;
234                        drawscreen(skin, 0);
235                        subtitlepause(0);
236                        continue;
237                }
238                if(rcret == getrcconfigint("rcmedia", NULL))
239                {
240                        struct skin* pluginnode = getplugin("Media Center");
241                        void (*startplugin)(void);
242                        subtitlepause(1);
243                        status.infobar = 0;
244                        clearscreen(infobar);
245                        if(pluginnode != NULL)
246                        {
247                                startplugin = dlsym(pluginnode->pluginhandle, "start");
248                                if(startplugin != NULL)
249                                startplugin();
250                        }
251                        drawscreen(skin, 0);
252                        subtitlepause(0);
253                        continue;
254                }
255                if(rcret == getrcconfigint("rcmenu", NULL))
256                {
257                        subtitlepause(1);
258                        status.infobar = 0;
259                        clearscreen(infobar);
260                        menu(getscreen("mainmenu"));
261                        status.menurelease = 0;
262                        status.updatevfd = START;
263                        drawscreen(skin, 0);
264                        subtitlepause(0);
265                        continue;
266                }
267                if(rcret == getrcconfigint("rcepg", NULL))
268                {
269                        subtitlepause(1);
270                        status.infobar = 0;
271                        clearscreen(infobar);
272                        epgchoice(NULL);
273                        drawscreen(skin, 0);
274                        subtitlepause(0);
275                        continue;
276                }
277                if(rcret == getrcconfigint("rcresolution", NULL))
278                {
279                        subtitlepause(1);
280                        status.infobar = 0;
281                        clearscreen(infobar);
282                        switchvideomode();
283                        drawscreen(skin, 0);
284                        subtitlepause(0);
285                        continue;
286                }
287                if(rcret == getrcconfigint("rcinfo", NULL))
288                {
289                        if(status.infobar == 1)
290                        {
291                                if(getconfigint("secondinfobar", NULL) == 2)
292                                {
293                                        clearscreen(infobar);
294                                        epgchoice(NULL);
295                                        status.infobar = 0;
296                                        drawscreen(skin, 0);
297                                        subtitlepause(0);
298                                }
299                                else if(getconfigint("secondinfobar", NULL) == 0 || infobar2 == status.skinerr || infobar == infobar2)
300                                {
301                                        status.infobar = 0;
302                                        drawscreen(skin, 0);
303                                        subtitlepause(0);
304                                }
305                                else
306                                {
307                                        infobar = infobar2;
308                                        drawscreen(infobar, 0);
309                                }
310                        }
311                        else
312                        {
313                                subtitlepause(1);
314                                status.infobar = 1;
315                                infobar = infobar1;
316                                drawscreen(infobar, 0);
317                        }
318                        continue;
319                }
320                if(rcret == getrcconfigint("rcpower", NULL))
321                {
322                        subtitlepause(1);
323                        status.infobar = 0;
324                        clearscreen(infobar);
325                        drawscreen(skin, 0);
326                        switch(getconfigint("poweraktion", NULL))
327                        {
328                                case 1: //power off
329                                        oshutdown(1, 1);
330                                        break;
331                                case 2: //standby
332                                        status.standby = 1;
333                                        break;
334                                case 3: //restart
335                                        oshutdown(2, 1);
336                                        break;
337                                case 4: //Gui restart
338                                        oshutdown(3, 1);
339                                        break;
340                                default:
341                                        standbymenu = getscreen("standbymenu");
342                                        menu(standbymenu);
343                                        break;
344                        }
345                        status.updatevfd = START;
346                        drawscreen(skin, 0);
347                        subtitlepause(0);
348                        continue;
349                }
350                if(rcret == getrcconfigint("rcrecall", NULL) || rcret == getrcconfigint("rc0", NULL))
351                {
352                        subtitlepause(1);
353                        clearscreen(infobar);
354                        drawscreen(skin, 0);
355                        if(status.lastservice->channel != NULL)
356                        {
357                                tmpstr = ostrcat(status.lastservice->channellist, NULL, 0, 0);
358                                servicecheckret(servicestart(status.lastservice->channel, tmpstr, NULL, 0), 0);
359                                free(tmpstr); tmpstr = NULL;
360                        }
361                        infobartimeout = 0;
362                        status.infobar = 1;
363                        infobar = infobar1;
364                        drawscreen(infobar, 0);
365                        continue;
366                }
367                if(rcret == getrcconfigint("rcchup", NULL))
368                {
369                        subtitlepause(1);
370                        zapup();
371                        clearscreen(infobar);
372                        drawscreen(skin, 0);
373                        infobartimeout = 0;
374                        status.infobar = 2;
375                        continue;
376                }
377                if(rcret == getrcconfigint("rcchdown", NULL))
378                {
379                        subtitlepause(1);
380                        zapdown();
381                        clearscreen(infobar);
382                        drawscreen(skin, 0);
383                        infobartimeout = 0;
384                        status.infobar = 2;
385                        continue;
386                }
387                if(rcret == rcnumber(rcret))
388                {
389                        subtitlepause(1);
390                        clearscreen(infobar);
391                        screenchannelbynr(rcret);
392                        status.infobar = 2;
393                        continue;
394                }
395                if(rcret == RCTIMEOUT)
396                {
397                        if(getconfigint("infobartimeout", NULL) > infobartimeout)
398                        {
399                                clearscreen(infobar);
400                                drawscreen(infobar, 0);
401                        }
402                        else
403                        {
404                                status.infobar = 0;
405                                drawscreen(skin, 0);
406                                subtitlepause(0);
407                        }
408                }
409        }
410}
411
412#endif
Note: See TracBrowser for help on using the repository browser.