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

Last change on this file since 21229 was 21229, checked in by nit, 9 years ago

[titan] change writevfd to writevfdmenu

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