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

Last change on this file since 38437 was 38437, checked in by obi, 6 years ago

set max fontsize 30

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