source: titan/plugins/mc/mc_global.h @ 16512

Last change on this file since 16512 was 16512, checked in by nit, 8 years ago

[titan] update all plugins

File size: 24.2 KB
Line 
1#ifndef MC_GLOBAL_H
2#define MC_GLOBAL_H
3
4/*
5 ------------------------------------------
6        mc_changeview start
7 ------------------------------------------
8*/
9void mc_changeview(int view, struct skin* filelist)
10{
11        struct skin* node = filelist;
12
13        while(node != NULL)
14        {
15                if(node->del == FILELISTDELMARK)
16                {
17                        node->fontsize = 0;
18                        node->height = 0;
19                        node->width = 0;
20                        node->height = 0;
21                        node->bgcol = 0;
22                        node->transparent = 0;
23                        node->prozwidth = 0;
24                        node->posx = 0;
25                }
26                node = node->next;
27        }
28
29        if(view == 0)
30        {
31                filelist->fontsize = 25;//, fontspace = 5;
32                filelist->height = 480;
33                filelist->width = 1160;
34                filelist->prozwidth = 0;
35                filelist->posx = 40;
36                filelist->transparent = -1;
37                filelist->bgcol = -1;
38        }
39        else if(view == 1)
40        {
41                filelist->fontsize = 35;//, fontspace = 5;
42                filelist->height = 480;
43                filelist->width = 1160;
44                filelist->prozwidth = 0;
45                filelist->posx = 40;
46                filelist->transparent = -1;
47                filelist->bgcol = -1;
48                filelist->prozwidth = 0;               
49        }
50        else if(view == 2)
51        {
52                filelist->fontsize = 20;//, fontspace = 5;
53                filelist->height = 480;
54                filelist->width = 1160;
55                filelist->prozwidth = 0;       
56                filelist->posx = 40;
57                filelist->transparent = -1;
58                filelist->bgcol = -1;   
59        }
60        else if(view == 3)
61        {
62                filelist->fontsize = 30;//, fontspace = 5;
63                filelist->height = 480;
64                filelist->width = 1160;
65                filelist->prozwidth = 0;
66                filelist->posx = 40;
67                filelist->transparent = -1;
68                filelist->bgcol = -1;
69                filelist->prozwidth = 0;               
70        }
71        else if(view == 4)
72        {
73                filelist->fontsize = 25;//, fontspace = 5;
74                filelist->height = 480;
75                filelist->width = 1160;
76                filelist->prozwidth = 0;
77                filelist->posx = 40;
78                filelist->transparent = -1;
79                filelist->bgcol = -1;
80                filelist->prozwidth = 0;       
81        }
82        else if(view == 5)
83        {
84                filelist->fontsize = 25;//, fontspace = 10;
85                filelist->height = 350;
86                filelist->width = 600;
87                filelist->prozwidth = 0;               
88                filelist->bgcol = 0x474747;
89                filelist->transparent = 40;
90                filelist->posx = 20;
91        }
92}
93
94/*
95 ------------------------------------------
96        mc_changeratio start
97 ------------------------------------------
98*/
99int mc_changeratio()
100{
101        debug(50, "[mc_changeratio] start");
102        char *tmppolicy = NULL, *tmpstr = NULL;
103        debug(50, "[mc_changeratio] getpolicy");
104        tmppolicy = getpolicy();
105
106        debug(50, "[mc_changeratio] from: %s", tmppolicy);
107
108        if(!strncmp("letterbox", tmppolicy, 8)){
109                tmpstr = ostrcat(tmpstr, "panscan", 1, 0);
110        } else if(!strncmp("panscan", tmppolicy, 7)){
111                tmpstr = ostrcat(tmpstr, "non", 1, 0);
112        } else if(!strncmp("non", tmppolicy, 3)){
113                tmpstr = ostrcat(tmpstr, "bestfit", 1, 0);
114        } else if(!strncmp("bestfit", tmppolicy, 7)){
115                tmpstr = ostrcat(tmpstr, "letterbox", 1, 0);
116        }
117
118        debug(50, "[mc_changeratio] to: %s", tmpstr);
119        setpolicy(tmpstr);
120
121        free(tmpstr); tmpstr = NULL;
122        free(tmppolicy); tmppolicy = NULL;
123        return 0;
124}
125
126extern struct skin* skin;
127extern struct screensaver* screensaver;
128
129void playereof(struct skin* apskin, struct skin* filelist, struct skin* listbox, struct skin* filelistpath, struct skin* b2, struct skin* picscreen, struct skin* picture, struct skin* picname, int* skip, int* eof, int* playlist, int playertype, int flag)
130{
131                debug(50, "--------------eof-------------");
132                status.playspeed = 0;
133                status.pause = 0;
134                status.play = 0;
135                int skiprcok = 0;
136               
137                //playlist
138                if(*playlist == 1)
139                {
140                        changetext(b2, _("Playlist-Mode"));
141
142                        if(screensaver != NULL && screensaver->type == 3 && flag == 2)
143                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
144               
145                        drawscreen(apskin, 0, 0);
146               
147                        int switchtofilelist = 0;
148                                               
149                        if(status.random == 1 && status.repeat == 0)
150                        {
151                                int maxdirs = 0, maxfiles = 0;
152                                getplaylistmax(listbox, &maxdirs, &maxfiles);
153                                struct skin* tmplist = getplaylistrandom(listbox, maxdirs, maxfiles);
154                                debug(50, "struct skin xtext=%s", tmplist->text);
155                                if(tmplist != NULL)
156                                {
157                                        debug(50, "struct skin randomtext=%s", tmplist->text);
158                                        setlistboxselection(listbox, tmplist->name);
159                                }
160                        }
161                        else
162                        {
163                                if(status.repeat == 0)
164                                {
165                                        debug(50, "writerc: rcdown next file");
166
167                                        debug(50, "listbox->aktline: %d", listbox->aktline);
168                                        debug(50, "listbox->linecount: %d", listbox->linecount);
169                                        debug(50, "*eof: %d", *eof);
170                                        debug(50, "flag: %d", flag);
171                       
172
173                                        if(*eof == 0)
174                                        {
175                                                if(listbox->aktline < listbox->linecount)
176                                                {
177                                                        listbox->aktline ++;
178//                                                      if(flag == 1)
179//                                                      {
180//                                                              apskin->hidden = YES;
181//                                                              delownerrc(apskin);
182//                                                              drawscreen(skin, 0, 0);
183//                                                      }
184                                                }
185                                                else
186                                                {
187                                                        if(flag != 3)
188                                                                playrcstop(playertype, flag);
189                                                        if((flag == 1) || (flag == 3))
190                                                        {
191                                                                apskin->hidden = NO;
192                                                                filelist->hidden = NO;
193                                                                listbox->hidden = YES;
194
195                                                                if(flag == 1)
196                                                                        changetext(filelistpath, _(getconfig("mc_vp_path", NULL)));
197                                                                else if(flag == 2)
198                                                                        changetext(filelistpath, _(getconfig("mc_ap_path", NULL)));
199                                                                else if(flag == 3)
200                                                                {
201                                                                        changetext(filelistpath, _(getconfig("mc_pp_path", NULL)));
202                                                                        picplayer(picscreen, picture, picname, NULL, 0);
203                                                                        clearscreen(picscreen);
204                                                                }
205
206                                                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
207                                                                changetext(b2, _("Filelist-Mode"));
208                                                                writevfd("Filelist-Mode");
209                                                                switchtofilelist = 1;
210       
211                                                                drawscreen(skin, 0, 0);
212                                                               
213                                                                // show skin
214                                                                setfbtransparent(255);
215
216                                                                *playlist = 0;
217                                                        }
218                                                        else
219                                                        {
220                                                                if(screensaver != NULL && screensaver->type == 3 && flag == 2)
221                                                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
222                                                        }
223                                                        skiprcok = 1;
224                                                }
225                                        }
226                                        else if(*eof == 1)
227                                        {
228                                                if(listbox->aktline < listbox->linecount)
229                                                        listbox->aktline ++;
230                                                        if(flag == 1)
231                                                        {
232                                                                //apskin->hidden = YES;
233                                                                //delownerrc(apskin);
234                                                                drawscreen(skin, 0, 0);
235                                                        }
236                                                else
237                                                {
238                                                        status.play = 1;
239                                                        skiprcok = 1;
240                                                }
241                                        }
242                                        else if(*eof == 2)
243                                        {
244                                                if(listbox->aktline == 1)
245                                                {
246                                                        status.play = 1;
247                                                        if(screensaver != NULL && screensaver->type == 3 && flag == 2)
248                                                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
249                                                        skiprcok = 1;
250                                                }
251                                                else
252                                                {
253                                                        listbox->aktline --;
254                                                        if(flag == 1)
255                                                        {
256                                                                //apskin->hidden = YES;
257                                                                //delownerrc(apskin);
258                                                                drawscreen(skin, 0, 0);
259                                                        }
260                                                        // workaround dont open folder on rcchup
261                                                        *skip = 1;
262                                                }
263                                        }
264
265                                        *eof = 0;
266
267                                        debug(50, "listbox->aktline: %d", listbox->aktline);
268                                        debug(50, "listbox->linecount: %d", listbox->linecount);
269                                }
270                        }
271                        delownerrc(apskin);
272                        if(switchtofilelist == 0)
273                                addscreenrc(apskin, listbox);
274                        else
275                                addscreenrc(apskin, filelist);                 
276                }
277                else
278                {
279                        changetext(b2, _("Filelist-Mode"));
280               
281                        if(screensaver != NULL && screensaver->type == 3 && flag == 2)
282                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
283
284                        if(flag != 3)
285                                drawscreen(apskin, 0, 0);
286
287                        if(status.random == 1 && status.repeat == 0)
288                        {
289                                int maxdirs = 0, maxfiles = 0;
290                                getfilelistmax(filelist, &maxdirs, &maxfiles);
291                                struct skin* tmplist = getfilelistrandom(filelist, maxdirs, maxfiles);
292                                debug(50, "struct skin xtext=%s", tmplist->text);
293                                if(tmplist != NULL)
294                                {
295                                        debug(50, "struct skin randomtext=%s", tmplist->text);
296                                        setlistboxselection(filelist, tmplist->name);
297                                }
298                        }
299                        else
300                        {
301                                if(status.repeat == 0)
302                                {
303                                        debug(50, "writerc: rcdown next file");
304
305                                        debug(50, "filelist->aktline: %d", filelist->aktline);
306                                        debug(50, "filelist->linecount: %d", filelist->linecount);
307
308                                        if(*eof == 0)
309                                        {
310                                                if(filelist->aktline < filelist->linecount)
311                                                {
312                                                        filelist->aktline ++;
313                                                }
314                                                else
315                                                {                                                       
316                                                        if(flag != 3)
317                                                                playrcstop(playertype, flag);
318                                                        if((flag == 1) || (flag == 3)) 
319                                                        {
320                                                                if(flag == 3)
321                                                                {
322                                                                        picplayer(picscreen, picture, picname, NULL, 0);
323                                                                        clearscreen(picscreen);
324                                                                }
325
326                                                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
327
328                                                                apskin->hidden = NO;
329                                                                filelist->hidden = NO;
330                                                                listbox->hidden = YES;
331
332                                                                // switch filelist
333                                                                delownerrc(apskin);
334                                                                addscreenrc(apskin, filelist);
335
336                                                                setfbtransparent(255);
337                                                        }
338                                                        else
339                                                        {
340                                                                if(screensaver != NULL && screensaver->type == 3 && flag == 2)
341                                                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
342                                                        }
343                                                        skiprcok = 1;
344                                                }
345
346                                        }
347                                        else if(*eof == 1)
348                                        {
349                                                if(filelist->aktline < filelist->linecount)
350                                                        filelist->aktline ++;
351                                                else
352                                                {
353                                                        status.play = 1;
354                                                        skiprcok = 1;
355                                                }
356                                        }
357                                        else if(*eof == 2)
358                                        {
359                                                if(filelist->aktline == 1)
360                                                {
361                                                        status.play = 1;
362                                                        if(screensaver != NULL && screensaver->type == 3 && flag == 2) 
363                                                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
364                                                        skiprcok = 1;
365                                                }
366                                                else
367                                                {
368                                                        filelist->aktline --;
369                                                        // workaround dont open folder on rcchup
370                                                        *skip = 1;
371                                                }
372                                        }
373
374                                        *eof = 0;
375
376                                        debug(50, "filelist->aktline: %d", filelist->aktline);
377                                        debug(50, "filelist->linecount: %d", filelist->linecount);
378                                }
379                        }
380                        delownerrc(apskin);
381                        addscreenrc(apskin, filelist);
382                }
383
384                debug(50, "flag: %d", flag);
385                debug(50, "skiprcok: %d", skiprcok);                                   
386
387                if(flag == 3 && skiprcok == 0)
388                        drawscreen(apskin, 2, 0);
389                else
390                        drawscreen(apskin, 0, 0);
391                       
392                if(skiprcok == 0)
393                        writerc(getrcconfigint("rcok", NULL));
394}
395
396void playerrandom(struct skin* apskin, struct skin* filelist, struct skin* listbox, struct skin* b3, int playlist, int flag)
397{
398        if(playlist == 0)
399        {
400                debug(50, "rcyellow: random");
401                if(status.random == 0)
402                {
403                        int maxdirs = 0, maxfiles = 0;
404                        getfilelistmax(filelist, &maxdirs, &maxfiles);
405                        struct skin* tmplist = getfilelistrandom(filelist, maxdirs, maxfiles);
406
407                        if(tmplist != NULL)
408                        {
409                                debug(50, "struct skin randomtext=%s", tmplist->text);
410                                setlistboxselection(filelist, tmplist->name);
411//                              if(flag == 2)
412                                        changetext(b3, _("Random-On"));
413                                drawscreen(apskin, 0, 0);
414                                status.random = 1;
415                                debug(50, "writerc rcok");
416                                writerc(getrcconfigint("rcok", NULL));
417                        }
418                }
419                else
420                {
421                        status.random = 0;
422//                      if(flag == 2)
423                                changetext(b3, _("Random"));
424                        drawscreen(apskin, 0, 0);
425                }
426        }
427        else
428        {
429                debug(50, "rcyellow: random");
430                if(status.random == 0)
431                {
432                        int maxdirs = 0, maxfiles = 0;
433                        getplaylistmax(listbox, &maxdirs, &maxfiles);
434                        struct skin* tmplist = getplaylistrandom(listbox, maxdirs, maxfiles);
435                        if(tmplist != NULL)
436                        {
437                                debug(50, "struct skin randomtext=%s", tmplist->text);
438                                setlistboxselection(listbox, tmplist->name);
439//                              if(flag == 2)
440                                        changetext(b3, _("Random-On"));
441                                drawscreen(apskin, 0, 0);
442                                status.random = 1;
443                                debug(50, "writerc rcok");
444                                writerc(getrcconfigint("rcok", NULL));
445                        }
446                }
447                else
448                {
449                        status.random = 0;
450//                      if(flag == 2)
451                                changetext(b3, _("Random"));
452                        drawscreen(apskin, 0, 0);
453                }
454        }
455}
456
457void showplaylist(struct skin* apskin, struct skin* filelistpath, struct skin* filelist, struct skin* listbox, struct skin* b2, int mode, int* playlist, int* eof, char** filename, char** currentdirectory, int* playertype, int flag)
458{
459        int playerret = 0;
460        struct skin* tmp = NULL;
461        struct mainplaylist* mplaylist = NULL;
462        struct playlist* playlistnode = NULL;
463        struct menulist* mlist = NULL, *mbox = NULL;
464        char* title = NULL;
465        int count = 0;
466
467        if(mode == 0)
468        {
469                debug(50, "rcgreenss: playlist menu");
470
471                addmenulist(&mlist, "Load Playlist", NULL, NULL, 0, 0);
472                addmenulist(&mlist, "Edit Playlist", NULL, NULL, 0, 0);
473               
474                mbox = menulistbox(mlist, "playlistmenu", NULL, "%pluginpath%/mc/skin", NULL, 1, 0);
475
476                drawscreen(apskin, 0, 0);
477
478                if(mbox != NULL)
479                {
480                        if(ostrcmp(mbox->name, "Load Playlist") == 0){
481//                              *count = 0;
482//                              *rcwait = 1000;
483       
484                                status.playspeed = 0;
485                                status.pause = 0;
486                                status.play = 0;
487
488                                mplaylist = screenmainplaylist(1);
489                                drawscreen(apskin, 0, 0);
490
491                                if(mplaylist != NULL && mplaylist->playlist != NULL)
492                                {
493                                        playlistnode = NULL;
494                                        playlistnode = mplaylist->playlist;
495                                        if(playlistnode->file != NULL)
496                                        {
497                                                *filename = ostrcat("", playlistnode->file, 0, 0);
498                                                playrcstop(*playertype, flag);
499
500                                                count = 0;
501
502                                                // clear listbox, not working ?
503                                                delmarkedscreennodes(apskin, 2);
504
505                                                char* firsttitle = NULL;
506                                                while(playlistnode != NULL)
507                                                {
508                                                        tmp = addlistbox(apskin, listbox, tmp, 2);
509                                                        if(tmp != NULL)
510                                                        {
511                                                                int count1 = 0;
512                                                                char* tmpstr1 = NULL;
513                                                                tmpstr1 = ostrcat("", playlistnode->file, 0, 0);
514
515                                                                int i = 0;
516                                                                struct splitstr* ret1 = NULL;
517                                                                ret1 = strsplit(tmpstr1, "/", &count1);
518                                                                if(count1 >= 1)
519                                                                        i = count1 - 1;
520                                                                count ++;
521                                                                debug(50, "addlistbox (%d) %s", count, playlistnode->file);
522
523                                                                title = ostrcat("(", oitoa(count), 0, 1);
524                                                                if(count < 10)
525                                                                        title = ostrcat(title, ")    ", 1, 0);
526                                                                else if(count < 100)
527                                                                        title = ostrcat(title, ")   ", 1, 0);
528                                                                else
529                                                                        title = ostrcat(title, ")  ", 1, 0);
530
531                                                                title = ostrcat(title, (&ret1[i])->part, 1, 0);
532                                                                changetext(tmp, _(title));
533
534                                                                if(firsttitle == NULL)
535                                                                        firsttitle = ostrcat("", title, 0, 0);                 
536
537                                                                free(ret1), ret1 = NULL;
538                                                                free(tmpstr1), tmpstr1 = NULL;
539
540                                                                // new
541
542                                                                changename(tmp, playlistnode->file);
543                                                                tmp->handle = (char*)playlistnode;
544                                                                tmp->del = 2;
545                                                        }
546                                                        playlistnode = playlistnode->next;
547                                                }
548
549                                                *currentdirectory = ostrcat("Playlist: ", mplaylist->name, 0, 0);
550                                                changetext(filelistpath, _(*currentdirectory));
551                                                filelist->hidden = YES;
552                                                listbox->hidden = NO;
553
554                                                // workaround playereof
555                                                playlistnode = NULL;
556                                                playlistnode = mplaylist->playlist;
557
558                                                setlistboxselection(listbox, *filename);
559                                                if(firsttitle == NULL)
560                                                        firsttitle = ostrcat("", "dummy no read title", 0, 0);                                         
561
562                                                title = ostrcat("", firsttitle, 0, 0);
563                                                changetext(b2, _("Playlist-Mode"));
564
565                                                if(screensaver != NULL && screensaver->type == 0)
566                                                        screensaver->value = title;
567
568                                                delownerrc(apskin);
569                                                addscreenrc(apskin, listbox);
570                                                drawscreen(apskin, 0, 0);
571                                                // show playlist end   
572                                                sleep(1);
573
574                                                if(flag == 1  && status.play == 1)
575                                                {
576                                                        servicestop(status.aktservice, 1, 1);
577                                                        drawscreen(skin, 0, 0);
578                                                        setfbtransparent(255);
579                                                        debug(50, "check");
580                                                        debug(50, "autostart_playlist: %d", getconfigint("mc_vp_autostart_playlist", NULL));
581                                                        debug(50, "status.play: %d", status.play);
582                                                        debug(50, "flag: %d", flag);
583                                                }
584                                                else if(flag == 2  && status.play == 1)
585                                                {
586                                                        addscreenrc(apskin, listbox);
587                                                        drawscreen(apskin, 0, 0);
588                                                        debug(50, "check");
589                                                        debug(50, "autostart_playlist: %d", getconfigint("mc_ap_autostart_playlist", NULL));
590                                                        debug(50, "status.play: %d", status.play);                             
591                                                        debug(50, "flag: %d", flag);
592                                                }
593                       
594                                                if((getconfigint("mc_vp_autostart_playlist", NULL) == 1 && flag == 1 && status.play == 0) || (getconfigint("mc_ap_autostart_playlist", NULL) == 1 && flag == 2 && status.play == 0))
595                                                {
596                                                        debug(50, "-------------- check ok titan playlist pls --------------");
597                                                        debug(50, "playerstart: %s", *filename);
598                                                        debug(50, "flag: %d", flag);
599                                                        debug(50, "playertype: %d", *playertype);       
600                                                                                       
601                                                        if(flag == 1)
602                                                        {
603                                                                servicestop(status.aktservice, 1, 1);
604                                                                drawscreen(skin, 0, 0);
605                                                                setfbtransparent(255);
606                                                                debug(50, "check");
607                                                                debug(50, "autostart_playlist: %d", getconfigint("mc_vp_autostart_playlist", NULL));
608                                                                debug(50, "status.play: %d", status.play);
609                                                        }
610                                                        else if(flag == 2)
611                                                        {
612                                                                addscreenrc(apskin, listbox);
613                                                                drawscreen(apskin, 0, 0);
614                                                                debug(50, "check");
615                                                                debug(50, "autostart_playlist: %d", getconfigint("mc_ap_autostart_playlist", NULL));
616                                                                debug(50, "status.play: %d", status.play);                             
617                                                        }
618                       
619//                                                      playerret = playerstart(*filename);
620                                                        if(getconfigint("playertype", NULL) == 1 && cmpfilenameext(*filename, ".ts") == 0)
621                                                                *playertype = 1;
622                                                        else
623                                                                *playertype = 0;
624                                       
625                                                        if(*playertype == 1)
626                                                                playerret = playerstartts(*filename, 0);
627                                                        else
628                                                                playerret = playerstart(*filename);
629                                       
630                                                        playwritevfd(*filename);
631                               
632       
633                                                        #ifndef SIMULATE
634                                                        if(playerret != 0)
635                                                        {
636                                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
637                                                                *eof = 1;
638                                                        }
639                                                        #endif
640       
641                                                        status.play = 1;
642                                                }
643                                                *playlist = 1;
644                                                free(firsttitle), firsttitle = NULL;
645                                        }
646                                }
647                        }
648                        else
649                        {
650                                screenmainplaylist(0);
651                                drawscreen(apskin, 0, 0);
652                        }
653                        freemenulist(mlist, 1);
654                }
655        }
656        else
657        {
658                FILE *fd = NULL;
659                char *fileline = NULL;
660                int linecount = 0;
661                int httpstream = 0;
662
663                fileline = malloc(MINMALLOC);
664                if(fileline == NULL)
665                {
666                        err("no memory");
667                        return;
668                }
669
670                fd = fopen(*filename, "r");
671                if(fd == NULL)
672                {
673                        perr("can't open %s", *filename);
674                        free(fileline);
675                        return;
676                }
677               
678                // clear listbox, not working ?
679                delmarkedscreennodes(apskin, 2);
680
681                char* firstfile = NULL;
682                char* firsttitle = NULL;
683                while(fgets(fileline, MINMALLOC, fd) != NULL)
684                {
685                        int addcurrdir = 0;
686                        if(fileline[0] == '#' || fileline[0] == '\n')
687                                continue;
688                        if(fileline[0] == '/')
689                                addcurrdir = 1;
690                        if(strlen(fileline) >= 6 && fileline[4] == ':' && fileline[5] == '/' && fileline[6] == '/')
691                        {
692                                addcurrdir = 1;
693                                httpstream = 1;
694                        }
695                        if(fileline[strlen(fileline) - 1] == '\n')
696                                fileline[strlen(fileline) - 1] = '\0';
697                        if(fileline[strlen(fileline) - 1] == '\r')
698                                fileline[strlen(fileline) - 1] = '\0';
699
700                        linecount++;
701
702                        tmp = addlistbox(apskin, listbox, tmp, 2);
703                        if(tmp != NULL)
704                        {
705                                int count1 = 0;
706                                char* tmpstr1 = NULL;
707                                tmpstr1 = ostrcat("", fileline, 0, 0);
708
709                                int i = 0;
710                                struct splitstr* ret1 = NULL;
711                                ret1 = strsplit(tmpstr1, "/", &count1);
712                                if(count1 >= 1)
713                                        i = count1 - 1;
714                                count ++;
715                                debug(50, "addlistbox (%d) %s", count, fileline);
716
717                                title = ostrcat("(", oitoa(count), 0, 1);
718                                if(count < 10)
719                                        title = ostrcat(title, ")    ", 1, 0);
720                                else if(count < 100)
721                                        title = ostrcat(title, ")   ", 1, 0);
722                                else
723                                        title = ostrcat(title, ")  ", 1, 0);
724
725                                title = ostrcat(title, (&ret1[i])->part, 1, 0);
726                                changetext(tmp, _(title));
727
728                                if(firstfile == NULL)
729                                {
730                                        if(addcurrdir == 0)
731                                        {
732                                                if(flag == 1)
733                                                        firstfile = ostrcat(getconfig("mc_vp_path", NULL), "/", 0, 0);
734                                                else if(flag == 2)
735                                                        firstfile = ostrcat(getconfig("mc_ap_path", NULL), "/", 0, 0);
736
737                                                firstfile = ostrcat(firstfile, fileline, 1, 0);
738                                        }
739                                        else
740                                                firstfile = ostrcat("", fileline, 0, 0);
741
742                                        firsttitle = ostrcat("", title, 0, 0);                 
743                                }
744                                free(ret1), ret1 = NULL;
745                                free(tmpstr1), tmpstr1 = NULL;
746
747                                if(addcurrdir == 0)
748                                {                                       
749                                        char* tmpstr3 = NULL;
750
751                                        if(flag == 1)
752                                                tmpstr3 = ostrcat(getconfig("mc_vp_path", NULL), "/", 0, 0);
753                                        else if(flag == 2)
754                                                tmpstr3 = ostrcat(getconfig("mc_ap_path", NULL), "/", 0, 0);
755
756                                        tmpstr3 = ostrcat(tmpstr3, fileline, 1, 0);
757                                        changename(tmp, tmpstr3);
758                                        free(tmpstr3), tmpstr3 = NULL;
759                                }
760                                else
761                                        changename(tmp, fileline);
762
763
764                                //tmp->handle = (char*)fileline;
765                                tmp->del = 2;
766                        }
767                }
768
769                if(*filename[0] == '/')
770                {
771                        int count3 = 0;
772                        char* tmpstr3 = NULL;
773                        char* title = NULL;
774                        tmpstr3 = ostrcat("", *filename, 0, 0);
775
776                        struct splitstr* ret3 = NULL;
777                        ret3 = strsplit(tmpstr3, "/", &count3);
778                        count = count3 - 1;
779                        title = ostrcat("", (&ret3[count])->part, 0, 0);
780                        *currentdirectory= ostrcat("Playlist: ", title, 0, 0);
781                        free(ret3), ret3 = NULL;
782                        free(tmpstr3), tmpstr3 = NULL;
783                        free(title), title = NULL;
784                }
785                else
786                {
787                        *currentdirectory= ostrcat("Playlist: ", *filename, 0, 0);
788                }
789
790                changetext(filelistpath, _(*currentdirectory));
791
792                filelist->hidden = YES;
793                listbox->hidden = NO;
794
795                changetext(b2, _("Playlist-Mode"));
796                delownerrc(apskin);
797                addscreenrc(apskin, listbox);
798                drawscreen(apskin, 0, 0);
799                // show playlist end   
800
801                if(firstfile != NULL)
802                {
803                        playrcstop(*playertype, flag);
804                        setlistboxselection(listbox, *filename);
805                        *filename = ostrcat("", firstfile, 0, 0);
806                        title = ostrcat("", firsttitle, 0, 0);
807
808                        //if(flag == 2)
809                                changetext(b2, _("Playlist-Mode"));
810
811                        if(screensaver != NULL && screensaver->type == 0 && flag == 2)
812                                screensaver->value = title;
813
814                        sleep(1);
815
816                        if(flag == 1  && status.play == 1)
817                        {
818                                servicestop(status.aktservice, 1, 1);
819                                drawscreen(skin, 0, 0);
820                                setfbtransparent(255);
821                                debug(50, "check");
822                                debug(50, "autostart_playlist: %d", getconfigint("mc_vp_autostart_playlist", NULL));
823                                debug(50, "status.play: %d", status.play);
824                                debug(50, "flag: %d", flag);
825                        }
826                        else if(flag == 2  && status.play == 1)
827                        {
828                                addscreenrc(apskin, listbox);
829                                drawscreen(apskin, 0, 0);
830                                debug(50, "check");
831                                debug(50, "autostart_playlist: %d", getconfigint("mc_ap_autostart_playlist", NULL));
832                                debug(50, "status.play: %d", status.play);                             
833                                debug(50, "flag: %d", flag);
834                        }
835
836                        // show playlist end
837                        if((getconfigint("mc_vp_autostart_playlist", NULL) == 1 && flag == 1 && status.play == 0) || (getconfigint("mc_ap_autostart_playlist", NULL) == 1 && flag == 2 && status.play == 0))
838                        {
839                                delownerrc(apskin);
840                                debug(50, "-------------- check ok m3u --------------");
841                                debug(50, "playerstart: %s", *filename);
842                                debug(50, "flag: %d", flag);
843                                debug(50, "playertype: %d", *playertype);
844
845                                if(flag == 1)
846                                {
847                                        servicestop(status.aktservice, 1, 1);
848                                        drawscreen(skin, 0, 0);
849                                        setfbtransparent(255);
850                                        debug(50, "check");
851                                        debug(50, "autostart_playlist: %d", getconfigint("mc_vp_autostart_playlist", NULL));
852                                        debug(50, "status.play: %d", status.play);
853                                }
854                                else if(flag == 2)
855                                {
856                                        addscreenrc(apskin, listbox);
857                                        drawscreen(apskin, 0, 0);
858                                        debug(50, "check");
859                                        debug(50, "autostart_playlist: %d", getconfigint("mc_ap_autostart_playlist", NULL));
860                                        debug(50, "status.play: %d", status.play);                             
861                                }
862
863//                              playerret = playerstart(*filename);
864                                if(getconfigint("playertype", NULL) == 1 && cmpfilenameext(*filename, ".ts") == 0)
865                                        *playertype = 1;
866                                else
867                                        *playertype = 0;
868               
869                                if(*playertype == 1)
870                                        playerret = playerstartts(*filename, 0);
871                                else
872                                        playerret = playerstart(*filename);
873
874                                playwritevfd(*filename);
875                               
876                                //playwritevfd(*filename);
877                                #ifndef SIMULATE
878                                        if(playerret != 0)
879                                        {
880                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
881
882                                                *eof = 1;
883                                        }
884                                #endif
885       
886                                status.play = 1;
887                                if(flag == 1)
888                                        screenplayinfobar(*filename, 0, 0, 0);
889                        }                               
890
891                        *playlist = 1;
892
893                        free(fileline), fileline = NULL;
894                        free(firstfile), firstfile = NULL;
895                        free(firsttitle), firsttitle = NULL;
896                }
897                fclose(fd);
898        }
899}
900
901void mc_audioplayer_infobar(struct skin* apskin, struct skin* infobar, struct skin* spos, struct skin* slen, struct skin* sreverse, struct skin* sprogress, char* filename)
902{
903        debug(50, "infobar start");
904
905        char* tmpstr = NULL;
906        unsigned long long int pos = 0, len = 0, reverse = 0;
907
908        pos = playergetpts() / 90000;
909        len = playergetlength();
910        reverse = len - pos;
911
912        debug(50, "pos: %llu", pos);
913        debug(50, "len: %llu", len);
914        debug(50, "reverse: %llu", reverse);
915
916        if(len == 0)
917                sprogress->progresssize = 0;
918        else
919                sprogress->progresssize = pos * 100 / len;
920
921        tmpstr = convert_timesec(pos);
922        changetext(spos, _(tmpstr));
923        free(tmpstr); tmpstr = NULL;
924
925        tmpstr = convert_timesec(len);
926        changetext(slen, _(tmpstr));
927        free(tmpstr); tmpstr = NULL;
928
929        tmpstr = convert_timesec(reverse);
930        changetext(sreverse, _(tmpstr));
931        free(tmpstr); tmpstr = NULL;
932
933        drawscreen(infobar, 0, 0);
934}
935
936void picplayer(struct skin* picscreen, struct skin* picture, struct skin* picname, char* filename, int flag)
937{
938        if(filename == NULL)
939        {
940                clearscreen(picscreen);
941                drawscreen(skin, 0, 0);
942                return;
943        }
944
945        char* tmpstr = NULL;
946
947        tmpstr = ostrcat(filename, "", 0, 0);
948
949        if(getconfigint("mc_pp_showpictitle", NULL) == 1 && tmpstr != NULL) changetext(picname,_((basename(tmpstr))));
950        free(tmpstr); tmpstr = NULL;
951
952        changepic(picture, filename);
953        picture->picwidth = 1;
954        picture->picheight = 1;
955        picture->bgcol = 0;
956
957        drawscreen(picscreen, 0, 4);
958}
959#endif
Note: See TracBrowser for help on using the repository browser.