source: titan/titan/gmultiepg.h @ 15272

Last change on this file since 15272 was 15257, checked in by nit, 10 years ago

fix

File size: 23.9 KB
Line 
1#ifndef GMULTIEPG_H
2#define GMULTIEPG_H
3
4time_t calcprimetime(time_t akttime)
5{
6        struct tm *loctime = NULL;
7        time_t ret = 0;
8
9        loctime = olocaltime(&akttime);
10        if(loctime != NULL)
11        {
12                loctime->tm_hour = 20;
13                loctime->tm_min = 15;
14                ret = mktime(loctime);
15                if(ret < akttime) // add 1 day
16                {
17                        free(loctime);
18                        ret += 86400;
19                        loctime = olocaltime(&ret);
20                        if(loctime != NULL)
21                                ret = mktime(loctime);
22                        else
23                                ret = akttime;
24                }
25        }
26
27        free(loctime);
28        return ret;
29}
30
31void createtimeline(struct skin* gmultiepg, struct skin* timeline, time_t akttime, int zoom)
32{
33        struct skin* node = NULL;
34        struct tm *loctime = NULL;
35        int posx = 0;
36        char* buf = NULL;
37
38        buf = malloc(6);
39        if(buf == NULL)
40        {
41                err("no mem");
42                return;
43        }
44
45        delmarkedscreennodes(gmultiepg, 3);
46
47        while(posx < timeline->iwidth)
48        {
49                node = addlistbox(gmultiepg, timeline, node, 3);
50                if(node != NULL)
51                {
52
53                        loctime = olocaltime(&akttime);
54                        if(loctime != NULL)
55                                strftime(buf, 6, "%H:%M", loctime);
56                        else
57                                snprintf(buf, 6, "00:00");
58                        free(loctime); loctime = NULL;
59
60                        akttime += 30 * 60;
61                        changetext(node, buf);
62                        node->prozwidth = 0;
63                        node->posx = posx;
64                        node->width = 30 * zoom; //30 min * zoom pixel
65                        node->bordersize = 1;
66                        posx += node->width;
67                        if(posx > timeline->iwidth)
68                                node->width -= (posx - timeline->iwidth);
69                }
70        }
71
72        free(buf);
73}
74
75int selectchannelgmepg(struct skin* listbox)
76{
77        struct skin* node = listbox;
78        struct channel* chnode = NULL;
79        listbox->aktpage = -1;
80        listbox->aktline = 1;
81
82        listbox->select = NULL;
83
84        if(status.servicetype == 0)
85                chnode = getchannel(getconfigint("serviceid", NULL), getconfiglu("transponderid", NULL));
86        else
87                chnode = getchannel(getconfigint("rserviceid", NULL), getconfiglu("rtransponderid", NULL));
88
89        if(chnode == NULL)
90        {
91                debug(1000, "out -> NULL detect");
92                return 1;
93        }
94
95        while(node != NULL)
96        {
97                if(node->deaktivcol > -1)
98                {
99                        node = node->next;
100                        continue;
101                }
102                if(chnode == (struct channel*)node->handle)
103                        return 0;
104
105                if(node->del == 1) listbox->aktline++;
106                node = node->next;
107        }
108        listbox->aktline = 1;
109        return 1;
110}
111
112
113int calcgmultiepg(struct channel* tmpchannel, struct skin* gmultiepg, struct skin* channellistbox, struct skin* listbox, struct skin* timeline, int zoom, time_t akttime, struct channel* aktchannel, int linecol1, int linecol2, int linecol3, int* aktline, struct skin** pchnode, struct skin** pchnode1, int height, int picheight, int epgpicon, long deaktivcol)
114{
115        int treffer = 0, gridbr = 0, aktcol = 0, nottuneable = 0;
116        struct epg* epgnode = NULL;
117        struct skin* chnode = NULL, *chnode1 = NULL;
118        char* tmpstr = NULL;
119        time_t nowtime = time(NULL);
120
121        if(tmpchannel != NULL && tmpchannel->servicetype == status.servicetype)
122        {
123                if(channelnottunable(tmpchannel) == 1) nottuneable = 1;
124                *pchnode = addlistbox(gmultiepg, channellistbox, *pchnode, 1);
125                chnode = *pchnode;
126                if(chnode != NULL)
127                {
128                        chnode->bgspace = 1;
129                       
130                        if(epgpicon == 1) tmpstr = createpiconpath(tmpchannel, 0);
131                        if(tmpstr != NULL && strstr(tmpstr, "default.png") == NULL)
132                        {
133                                changepic(chnode, tmpstr);
134                                chnode->height = picheight;
135                        }
136                        else
137                        {
138                                changetext(chnode, tmpchannel->name);
139                                chnode->height = height;
140                        }
141                        free(tmpstr); tmpstr = NULL;
142
143                        epgnode = getepgakt(tmpchannel);
144
145                        while(epgnode != NULL)
146                        {
147                                if(epgnode->endtime <= akttime)
148                                {
149                                        epgnode = epgnode->next;
150                                        continue;
151                                }
152                                if(epgnode->starttime >= akttime + ((listbox->iwidth * 60) / zoom))
153                                        break;
154
155                                *pchnode1 = addlistbox(gmultiepg, listbox, *pchnode1, 1);
156                                chnode1 = *pchnode1;
157                                if(chnode1 != NULL)
158                                {
159                                        (*aktline)++;
160                                        if(gridbr == 0)
161                                        {
162                                                chnode1->type = TEXTBOX | GRIDBR;
163                                                if(tmpchannel == aktchannel)
164                                                {
165                                                        listbox->aktline = *aktline;
166                                                        listbox->gridcol = 0;
167                                                }
168                                        }
169                                        else
170                                                chnode1->type = TEXTBOX;
171                                        chnode1->wrap = YES;
172                                        gridbr = 1;
173                                        treffer = 1;
174                                        chnode1->height = chnode->height;
175                                        chnode1->width = ((epgnode->endtime - epgnode->starttime) / 60) * zoom;
176                                        chnode1->posx = ((epgnode->starttime - akttime) / 60) * zoom;
177                                        if(chnode1->posx < 0)
178                                        {
179                                                chnode1->width += chnode1->posx;
180                                                chnode1->posx = 0;
181                                        }
182                                        chnode1->prozwidth = 0;
183                                        if(aktcol == linecol1)
184                                                aktcol = linecol2;
185                                        else
186                                                aktcol = linecol1;
187                                        if(nowtime >= epgnode->starttime && nowtime < epgnode->endtime)
188                                                aktcol = linecol3;
189                                        chnode1->bgcol = aktcol;
190                                        chnode1->bgspace = 1;
191                                        chnode1->vspace = 2;
192                                        chnode1->hspace = 2;
193                                        if(nottuneable == 1)
194                                                chnode1->deaktivcol = deaktivcol;
195                                       
196                                        //TODO: record timeline
197                                        //chnode1->type = MULTIPROGRESSBAR;
198                                        //chnode1->progresscol = listbox->progresscol;
199                                        //chnode1->epgrecord = getepgrecord(tmpchannel, epgnode);
200               
201                                        changetext(chnode1, epgnode->title);
202                                        chnode1->handle = (char*)tmpchannel;
203                                        chnode1->handle1 = (char*)epgnode;
204                                        if(chnode1->posx + chnode1->width >= listbox->iwidth)
205                                        {
206                                                chnode1->width = listbox->iwidth - chnode1->posx;
207                                                break;
208                                        }
209                                }
210                                epgnode = epgnode->next;
211                        }
212                        if(gridbr == 0)
213                        {
214                                *pchnode1 = addlistbox(gmultiepg, listbox, *pchnode1, 1);
215                                chnode1 = *pchnode1;
216                                if(chnode1 != NULL)
217                                {
218                                        (*aktline)++;
219                                        if(tmpchannel == aktchannel)
220                                                listbox->aktline = *aktline;
221                                        if(gridbr == 0) chnode1->type = GRIDBR;
222                                        gridbr = 1;
223                                        chnode1->height = chnode->height;
224                                        chnode1->handle = (char*)tmpchannel;
225                                        chnode1->bgspace = 1;
226                                        if(nottuneable == 1)
227                                                chnode1->deaktivcol = deaktivcol;
228                                }
229                        }
230
231                        chnode->handle = (char*)tmpchannel;
232                        if(nottuneable == 1)
233                        {
234                                chnode->deaktivcol = deaktivcol;
235                                (*aktline)--;
236                        }
237                }
238        }
239        return treffer;
240}
241
242int showallgmepgchannel(struct skin* gmultiepg, struct skin* channellistbox, struct skin* listbox, struct skin* timeline, int zoom, time_t akttime, struct channel* aktchannel)
243{
244        int treffer = 0, aktline = 0;
245        struct skin* chnode = NULL, *chnode1 = NULL;
246        struct channel* tmpchannel = channel;
247
248        int linecol1 = convertcol("epgcol1");
249        int linecol2 = convertcol("epgcol2");
250        int linecol3 = convertcol("epgcol3");
251        int height = getskinconfigint("epgheight", NULL);
252        int picheight = getskinconfigint("epgpicheight", NULL);
253        int epgpicon = getconfigint("epgpicon", NULL);
254        long deaktivcol = convertcol("deaktivcol");
255
256        if(height < 1) height = 35;
257        if(picheight < 1) picheight = 35;
258
259        if(gmultiepg != NULL) delmarkedscreennodes(gmultiepg, 1);
260        if(listbox != NULL) listbox->aktline = 1;
261
262        while(tmpchannel != NULL)
263        {
264                if(calcgmultiepg(tmpchannel, gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel, linecol1, linecol2, linecol3, &aktline, &chnode, &chnode1, height, picheight, epgpicon, deaktivcol) == 1)
265                        treffer = 1;
266                tmpchannel = tmpchannel->next;
267        }
268        return treffer;
269}
270
271int showbouquetgmepgchannel(struct skin* gmultiepg, struct skin* channellistbox, struct skin* listbox, struct skin* timeline, struct bouquet* firstbouquet, int zoom, time_t akttime, struct channel* aktchannel)
272{
273        int treffer = 0, aktline = 0;
274        struct skin* chnode = NULL, *chnode1 = NULL;
275        struct bouquet* tmpbouquet = firstbouquet;
276
277        int linecol1 = convertcol("epgcol1");
278        int linecol2 = convertcol("epgcol2");
279        int linecol3 = convertcol("epgcol3");
280        int height = getskinconfigint("epgheight", NULL);
281        int picheight = getskinconfigint("epgpicheight", NULL);
282        int epgpicon = getconfigint("epgpicon", NULL);
283        long deaktivcol = convertcol("deaktivcol");
284
285        if(height < 1) height = 35;
286        if(picheight < 1) picheight = 35;
287
288        if(gmultiepg != NULL) delmarkedscreennodes(gmultiepg, 1);
289        if(listbox != NULL) listbox->aktline = 1;
290
291        while(tmpbouquet != NULL)
292        {
293                if(calcgmultiepg(tmpbouquet->channel, gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel, linecol1, linecol2, linecol3, &aktline, &chnode, &chnode1, height, picheight, epgpicon, deaktivcol) == 1)
294                        treffer = 1;
295                tmpbouquet = tmpbouquet->next;
296        }
297        return treffer;
298}
299
300int showprovidergmepgchannel(struct skin* gmultiepg, struct skin* channellistbox, struct skin* listbox, struct skin* timeline, struct provider* providernode, int zoom, time_t akttime, struct channel* aktchannel)
301{
302        int treffer = 0, aktline = 0;
303        struct skin* chnode = NULL, *chnode1 = NULL;
304        struct channel* tmpchannel = channel;
305
306        int linecol1 = convertcol("epgcol1");
307        int linecol2 = convertcol("epgcol2");
308        int linecol3 = convertcol("epgcol3");
309        int height = getskinconfigint("epgheight", NULL);
310        int picheight = getskinconfigint("epgpicheight", NULL);
311        int epgpicon = getconfigint("epgpicon", NULL);
312        long deaktivcol = convertcol("deaktivcol");
313
314        if(height < 1) height = 35;
315        if(picheight < 1) picheight = 35;
316
317        if(gmultiepg != NULL) delmarkedscreennodes(gmultiepg, 1);
318
319        while(tmpchannel != NULL)
320        {
321                if(tmpchannel->provider == providernode)
322                {
323                        if(calcgmultiepg(tmpchannel, gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel, linecol1, linecol2, linecol3, &aktline, &chnode, &chnode1, height, picheight, epgpicon, deaktivcol) == 1)
324                                treffer = 1;
325                }
326                tmpchannel = tmpchannel->next;
327        }
328        return treffer;
329}
330
331int showsatgmepgchannel(struct skin* gmultiepg, struct skin* channellistbox, struct skin* listbox, struct skin* timeline, struct sat* satnode, int zoom, time_t akttime, struct channel* aktchannel)
332{
333        int treffer = 0, aktline = 0;
334        struct skin* chnode = NULL, *chnode1 = NULL;
335        struct channel* tmpchannel = channel;
336       
337        if(satnode == NULL) return 1;
338
339        int linecol1 = convertcol("epgcol1");
340        int linecol2 = convertcol("epgcol2");
341        int linecol3 = convertcol("epgcol3");
342        int height = getskinconfigint("epgheight", NULL);
343        int picheight = getskinconfigint("epgpicheight", NULL);
344        int epgpicon = getconfigint("epgpicon", NULL);
345        long deaktivcol = convertcol("deaktivcol");
346
347        if(height < 1) height = 35;
348        if(picheight < 1) picheight = 35;
349
350        if(gmultiepg != NULL) delmarkedscreennodes(gmultiepg, 1);
351
352        while(tmpchannel != NULL)
353        {
354                if(tmpchannel->transponder != NULL && tmpchannel->transponder->orbitalpos == satnode->orbitalpos)
355                {
356                        if(calcgmultiepg(tmpchannel, gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel, linecol1, linecol2, linecol3, &aktline, &chnode, &chnode1, height, picheight, epgpicon, deaktivcol) == 1)
357                                treffer = 1;
358                }
359                tmpchannel = tmpchannel->next;
360        }
361        return treffer;
362}
363
364int showazgmepgchannel(struct skin* gmultiepg, struct skin* channellistbox, struct skin* listbox, struct skin* timeline, int character, int zoom, time_t akttime, struct channel* aktchannel)
365{
366        int treffer = 0, aktline = 0;
367        struct skin* chnode = NULL, *chnode1 = NULL;
368        struct channel* tmpchannel = channel;
369
370        int linecol1 = convertcol("epgcol1");
371        int linecol2 = convertcol("epgcol2");
372        int linecol3 = convertcol("epgcol3");
373        int height = getskinconfigint("epgheight", NULL);
374        int picheight = getskinconfigint("epgpicheight", NULL);
375        int epgpicon = getconfigint("epgpicon", NULL);
376        long deaktivcol = convertcol("deaktivcol");
377
378        if(height < 1) height = 35;
379        if(picheight < 1) picheight = 35;
380
381        if(gmultiepg != NULL) delmarkedscreennodes(gmultiepg, 1);
382
383        while(tmpchannel != NULL)
384        {
385                if(tmpchannel->name != NULL && (tmpchannel->name[0] == character || tmpchannel->name[0] == character + 32))
386                {
387                        if(calcgmultiepg(tmpchannel, gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel, linecol1, linecol2, linecol3, &aktline, &chnode, &chnode1, height, picheight, epgpicon, deaktivcol) == 1)
388                                treffer = 1;
389                }
390                tmpchannel = tmpchannel->next;
391        }
392        return treffer;
393}
394
395void drawchannellistgmepg(struct skin* gmultiepg, int list, struct skin* listbox)
396{
397        status.markedchannel = NULL;
398
399        if(list == ALLCHANNEL || list == SATCHANNEL || list == PROVIDERCHANNEL || list == AZCHANNEL || list == BOUQUETCHANNEL)
400        {
401                if(listbox->select == NULL)
402                {
403                        status.screencalc = 2;
404                        drawscreen(gmultiepg, 0);
405                        status.screencalc = 0;
406                }
407                if(listbox->select != NULL)
408                        status.markedchannel = (struct channel*)listbox->select->handle;
409        }
410        drawscreen(gmultiepg, 0);
411}
412
413void gmultiepgfilldesc(struct skin* listbox, struct skin* epgdesc)
414{
415        char* tmpstr2 = NULL;
416
417        if(listbox->select != NULL)
418        {
419                tmpstr2 = epgdescunzip((struct epg*)listbox->select->handle1);
420                changetext(epgdesc, tmpstr2);
421                free(tmpstr2); tmpstr2 = NULL;
422        }
423}
424
425void gmultiepgchangesize(struct skin* gmultiepg, struct skin* listbox, struct skin* channellistbox, struct skin* timeline)
426{
427        int chboxwidth = 0;
428        int epgpicon = getconfigint("epgpicon", NULL);
429
430        if(epgpicon == 1)
431                chboxwidth = getskinconfigint("epgchannelpiconwidth", NULL);
432        else
433                chboxwidth = getskinconfigint("epgchannelwidth", NULL);
434                       
435        if(chboxwidth != 0)
436        {
437                channellistbox->width = chboxwidth;
438               
439                listbox->width = gmultiepg->iwidth - (channellistbox->width + channellistbox->posx);
440                listbox->posx = channellistbox->width + channellistbox->posx;
441                listbox->prozwidth = 0;
442
443                timeline->width = gmultiepg->iwidth - (channellistbox->width + channellistbox->posx);
444                timeline->posx = channellistbox->width + channellistbox->posx;
445                timeline->prozwidth = 0;
446        }
447}
448
449
450void screengmultiepg(struct channel* chnode, struct epg* epgnode, int flag)
451{
452        int rcret = 0, ret = 0, epgscreenconf = 0;
453        struct skin* gmultiepg = getscreen("gmultiepg");
454        struct skin* listbox = getscreennode(gmultiepg, "listbox");
455        struct skin* channellistbox = getscreennode(gmultiepg, "channellistbox");
456        struct skin* epgdesc = getscreennode(gmultiepg, "epgdesc");
457        struct skin* timeline = getscreennode(gmultiepg, "timeline");
458        struct skin* b2 = getscreennode(gmultiepg, "b2");
459        struct skin* b3 = getscreennode(gmultiepg, "b3");
460        struct skin* b4 = getscreennode(gmultiepg, "b4");
461       
462        int list = ALLCHANNEL;
463        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL;
464        void* aktlist = NULL;
465        int character = 0;
466        struct sat* satnode = NULL;
467        struct provider* providernode = NULL;
468        struct channel* aktchannel = NULL;
469#ifdef SIMULATE
470        time_t akttime = time(NULL);
471        //time_t akttime = 1307871000;
472        //akttime = 1315614900;
473        //akttime = 1317926400;
474#else
475        time_t akttime = time(NULL);
476#endif
477        int zoom = getconfigint("gmultiepgzoom", NULL);
478        if(zoom < 1) zoom = 4;
479        int nochanneltitle = getskinconfigint("nochanneltitle", NULL);
480
481        akttime -= (((akttime / 60) % 15) * 60);
482        akttime -= (((akttime) % 60));
483        time_t starttime = akttime;
484
485        if(chnode == NULL) chnode = status.aktservice->channel;
486        if(epgnode == NULL) epgnode = getepgakt(chnode);
487        tmpstr2 = epgdescunzip(epgnode);
488        changetext(epgdesc, tmpstr2);
489        free(tmpstr2); tmpstr2 = NULL;
490
491        //chalc screen, so we have all infos
492        status.screencalc = 2;
493        drawscreen(gmultiepg, 0);
494        status.screencalc = 0;
495
496        time_t addtime = (listbox->iwidth / zoom) * 60;
497        addtime -= (((addtime / 60) % 15) * 60);
498        addtime -= (((addtime) % 60));
499        epgscreenconf = getconfigint("epg_screen", NULL);
500
501        if(status.servicetype == 0)
502        {
503                tmpstr = getconfig("channellist", NULL);
504                aktchannel = getchannel(getconfigint("serviceid", NULL), getconfiglu("transponderid", NULL));
505        }
506        else
507        {
508                tmpstr = getconfig("rchannellist", NULL);
509                aktchannel = getchannel(getconfigint("rserviceid", NULL), getconfiglu("rtransponderid", NULL));
510        }
511
512        if(ostrncmp("(BOUQUET)-", tmpstr, 10) == 0 && strlen(tmpstr) > 10)
513        {
514                struct mainbouquet* mainbouquetnode = NULL;
515                mainbouquetnode = getmainbouquet(tmpstr + 10);
516                if(mainbouquetnode != NULL && mainbouquetnode->bouquet != NULL)
517                {
518                        tmpstr1 = ostrcat(tmpstr1, _("GRAPHIC MULTI EPG - Bouquets"), 0, 0);
519                        tmpstr1 = ostrcat(tmpstr1, " - ", 1, 0);
520                        tmpstr1 = ostrcat(tmpstr1, tmpstr + 10, 1, 0);
521                        if(nochanneltitle == 0) changetitle(gmultiepg, tmpstr1);
522                        free(tmpstr1); tmpstr1 = NULL;
523                        list = BOUQUETCHANNEL;
524                        aktlist = (void*)mainbouquetnode;
525                        showbouquetgmepgchannel(gmultiepg, channellistbox, listbox, timeline, mainbouquetnode->bouquet, zoom, akttime, aktchannel);
526                        selectchannelgmepg(channellistbox);
527                }
528        }
529        else if(ostrncmp("(A-Z)-", tmpstr, 6) == 0 && strlen(tmpstr) > 6)
530        {
531                tmpstr1 = ostrcat(tmpstr1, _("GRAPHIC MULTI EPG - Channel"), 0, 0);
532                tmpstr1 = ostrcat(tmpstr1, " - ", 1, 0);
533                tmpstr1 = ostrcat(tmpstr1, tmpstr + 6, 1, 0);
534                if(nochanneltitle == 0) changetitle(gmultiepg, tmpstr1);
535                free(tmpstr1); tmpstr1 = NULL;
536                list = AZCHANNEL;
537                character = (int)tmpstr[6];
538                aktlist = (void*)(int)tmpstr[6];
539                showazgmepgchannel(gmultiepg, channellistbox, listbox, timeline, character, zoom, akttime, aktchannel);
540                selectchannelgmepg(channellistbox);
541        }
542        else if(ostrncmp("(SAT)-", tmpstr, 6) == 0 && strlen(tmpstr) > 6)
543        {
544                tmpstr1 = ostrcat(tmpstr1, _("GRAPHIC MULTI EPG - Satellites"), 0, 0);
545                tmpstr1 = ostrcat(tmpstr1, " - ", 1, 0);
546                tmpstr1 = ostrcat(tmpstr1, tmpstr + 6, 1, 0);
547                if(nochanneltitle == 0) changetitle(gmultiepg, tmpstr1);
548                free(tmpstr1); tmpstr1 = NULL;
549                satnode = getsat(tmpstr + 6);
550                list = SATCHANNEL;
551                aktlist = (void*)satnode;
552                showsatgmepgchannel(gmultiepg, channellistbox, listbox, timeline, satnode, zoom, akttime, aktchannel);
553                selectchannelgmepg(channellistbox);
554        }
555        else if(ostrncmp("(PROVIDER)-", tmpstr, 11) == 0 && strlen(tmpstr) > 6)
556        {
557                tmpstr1 = ostrcat(tmpstr1, _("GRAPHIC MULTI EPG - Provider"), 0, 0);
558                tmpstr1 = ostrcat(tmpstr1, " - ", 1, 0);
559                tmpstr1 = ostrcat(tmpstr1, tmpstr + 11, 1, 0);
560                if(nochanneltitle == 0) changetitle(gmultiepg, tmpstr1);
561                free(tmpstr1); tmpstr1 = NULL;
562                providernode = getproviderbyname(tmpstr + 11);
563                list = PROVIDERCHANNEL;
564                aktlist = (void*)providernode;
565                showprovidergmepgchannel(gmultiepg, channellistbox, listbox, timeline, providernode, zoom, akttime, aktchannel);
566                selectchannelgmepg(channellistbox);
567        }
568        else
569        {
570                if(nochanneltitle == 0) changetitle(gmultiepg, _("GRAPHIC MULTI EPG - All Channels"));
571                list = ALLCHANNEL;
572                showallgmepgchannel(gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel);
573                selectchannelgmepg(channellistbox);
574        }
575
576        if(flag == 0 && epgscreenconf == 3)
577        {
578                b2->hidden = NO;
579                b3->hidden = NO;
580                b4->hidden = NO;
581        }
582        else
583        {
584                b2->hidden = YES;
585                b3->hidden = YES;
586                b4->hidden = YES;
587        }
588
589        gmultiepgchangesize(gmultiepg, listbox, channellistbox, timeline);
590
591        tmpstr = NULL;
592        status.screencalc = 2;
593        drawscreen(gmultiepg, 0);
594        status.screencalc = 0;
595        addscreenrc(gmultiepg, listbox);
596        listbox->aktpage = channellistbox->aktpage;
597
598        createtimeline(gmultiepg, timeline, akttime, zoom);
599
600        drawchannellistgmepg(gmultiepg, list, listbox);
601
602        while(1)
603        {
604                status.screencalc = 2;
605                rcret = waitrc(gmultiepg, 0, 0);
606                status.screencalc = 0;
607
608                channellistbox->aktpage = listbox->aktpage;
609
610                if((rcret == getrcconfigint("rcexit", NULL)) || (rcret == getrcconfigint("rcepg", NULL))) break;
611                //if(rcret == getrcconfigint("rcinfo", NULL)) break;
612                if(rcret == getrcconfigint("rcok", NULL))
613                {
614                        servicecheckret(servicestart((struct channel*)listbox->select->handle, NULL, NULL, 0), 0);
615                        break;
616                }
617                if(rcret == getrcconfigint("rcinfo", NULL))
618                {
619                        if(listbox->select != NULL)
620                        {
621                                clearscreen(gmultiepg);
622                                screenepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, 1);
623                                drawscreen(gmultiepg, 0);
624                        }
625                }
626               
627                if(flag == 0 && epgscreenconf == 3 && rcret == getrcconfigint("rcgreen", NULL))
628                {
629                        if(listbox->select != NULL)
630                        {
631                                clearscreen(gmultiepg);
632                                screenepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, 0);
633                                //drawscreen(gmultiepg, 0);
634                                break;
635                        }
636                }
637                if(flag == 0 && epgscreenconf == 3 && rcret == getrcconfigint("rcyellow", NULL))
638                {
639                        if(listbox->select != NULL)
640                        {
641                                clearscreen(gmultiepg);
642                                screensingleepg((struct channel*)listbox->select->handle, NULL, 0);
643                                //drawscreen(gmultiepg, 0);
644                                break;
645                        }
646                }
647                if(flag == 0 && epgscreenconf == 3 && rcret == getrcconfigint("rcblue", NULL))
648                {
649                        if(listbox->select != NULL)
650                        {
651                                clearscreen(gmultiepg);
652                                screenmultiepg((struct channel*)listbox->select->handle, NULL, 0);
653                                //drawscreen(gmultiepg, 0);
654                                break;
655                        }
656                }
657
658                if(rcret == getrcconfigint("rcff", NULL) || rcret == getrcconfigint("rcfav", NULL))
659                {
660                        time_t tmptime = 0;
661
662                        if(rcret == getrcconfigint("rcfav", NULL))
663                        {
664                                tmptime = calcprimetime(akttime);
665                                if(tmptime != 0)
666                                {
667                                        akttime = tmptime;
668                                        akttime -= addtime;
669                                }
670                        }
671                        akttime += addtime;
672
673                        if(list == BOUQUETCHANNEL)
674                        {
675                                if(showbouquetgmepgchannel(gmultiepg, channellistbox, listbox, timeline, ((struct mainbouquet*)aktlist)->bouquet, zoom, akttime, aktchannel) == 0)
676                                {
677                                        if(tmptime == 0)
678                                                akttime -= addtime;
679                                        else
680                                                akttime = starttime;
681                                        if(akttime < starttime)
682                                                akttime = starttime;
683                                        else
684                                                showbouquetgmepgchannel(gmultiepg, channellistbox, listbox, timeline, ((struct mainbouquet*)aktlist)->bouquet, zoom, akttime, aktchannel);
685                                }
686                        }
687                        else if(list == ALLCHANNEL)
688                        {
689                                if(showallgmepgchannel(gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel) == 0)
690                                {
691                                        if(tmptime == 0)
692                                                akttime -= addtime;
693                                        else
694                                                akttime = starttime;
695                                        if(akttime < starttime)
696                                                akttime = starttime;
697                                        else
698                                                showallgmepgchannel(gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel);
699                                }
700                        }
701                        else if(list == AZCHANNEL)
702                        {
703                                if(showazgmepgchannel(gmultiepg, channellistbox, listbox, timeline, character, zoom, akttime, aktchannel) == 0)
704                                {
705                                        if(tmptime == 0)
706                                                akttime -= addtime;
707                                        else
708                                                akttime = starttime;
709                                        if(akttime < starttime)
710                                                akttime = starttime;
711                                        else
712                                                showazgmepgchannel(gmultiepg, channellistbox, listbox, timeline, character, zoom, akttime, aktchannel);
713                                }
714                        }
715                        else if(list == SATCHANNEL)
716                        {
717                                if(showsatgmepgchannel(gmultiepg, channellistbox, listbox, timeline, satnode, zoom, akttime, aktchannel) == 0)
718                                {
719                                        if(tmptime == 0)
720                                                akttime -= addtime;
721                                        else
722                                                akttime = starttime;
723                                        if(akttime < starttime)
724                                                akttime = starttime;
725                                        else
726                                                showsatgmepgchannel(gmultiepg, channellistbox, listbox, timeline, satnode, zoom, akttime, aktchannel);
727                                }
728                        }
729                        else if(list == PROVIDERCHANNEL)
730                        {
731                                if(showprovidergmepgchannel(gmultiepg, channellistbox, listbox, timeline, providernode, zoom, akttime, aktchannel) == 0)
732                                {
733                                        if(tmptime == 0)
734                                                akttime -= addtime;
735                                        else
736                                                akttime = starttime;
737                                        if(akttime < starttime)
738                                                akttime = starttime;
739                                        else
740                                                showprovidergmepgchannel(gmultiepg, channellistbox, listbox, timeline, providernode, zoom, akttime, aktchannel);
741                                }
742                        }
743                        createtimeline(gmultiepg, timeline, akttime, zoom);
744                        status.screencalc = 2;
745                        drawscreen(gmultiepg, 0);
746                        status.screencalc = 0;
747                        gmultiepgfilldesc(listbox, epgdesc);
748                        drawscreen(gmultiepg, 0);
749                        if(listbox->select != NULL)
750                                aktchannel = (struct channel*)listbox->select->handle;
751                        continue;
752                }
753
754                if(rcret == getrcconfigint("rcfr", NULL))
755                {
756                        akttime -= addtime;
757                        if(akttime < starttime) akttime = starttime;
758
759                        if(list == BOUQUETCHANNEL)
760                                showbouquetgmepgchannel(gmultiepg, channellistbox, listbox, timeline, ((struct mainbouquet*)aktlist)->bouquet, zoom, akttime, aktchannel);
761                        else if(list == ALLCHANNEL)
762                                showallgmepgchannel(gmultiepg, channellistbox, listbox, timeline, zoom, akttime, aktchannel);
763                        else if(list == AZCHANNEL)
764                                showazgmepgchannel(gmultiepg, channellistbox, listbox, timeline, character, zoom, akttime, aktchannel);
765                        else if(list == SATCHANNEL)
766                                showsatgmepgchannel(gmultiepg, channellistbox, listbox, timeline, satnode, zoom, akttime, aktchannel);
767                        else if(list == PROVIDERCHANNEL)
768                                showprovidergmepgchannel(gmultiepg, channellistbox, listbox, timeline, providernode, zoom, akttime, aktchannel);
769                        createtimeline(gmultiepg, timeline, akttime, zoom);
770                        status.screencalc = 2;
771                        drawscreen(gmultiepg, 0);
772                        status.screencalc = 0;
773                        gmultiepgfilldesc(listbox, epgdesc);
774                        drawscreen(gmultiepg, 0);
775                        if(listbox->select != NULL)
776                                aktchannel = (struct channel*)listbox->select->handle;
777                        continue;
778                }
779
780                if(rcret == getrcconfigint("rcred", NULL) && listbox->select != NULL)
781                {
782                        clearscreen(gmultiepg);
783                        ret = addrecepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, NULL);
784                        drawscreen(gmultiepg, 0);
785                        continue;
786                }
787
788                gmultiepgfilldesc(listbox, epgdesc);
789                drawscreen(gmultiepg, 0);
790                if(listbox->select != NULL)
791                        aktchannel = (struct channel*)listbox->select->handle;
792        }
793
794        status.markedchannel = NULL;
795        status.markmodus = 0;
796        status.screencalc = 0;
797        delmarkedscreennodes(gmultiepg, 1);
798        delmarkedscreennodes(gmultiepg, 3);
799        delownerrc(gmultiepg);
800        clearscreen(gmultiepg);
801}
802
803#endif
Note: See TracBrowser for help on using the repository browser.