source: titan/plugins/mc/mc_videoplayer.h @ 15606

Last change on this file since 15606 was 15606, checked in by obi, 8 years ago

[titan] fix mc enable view modis

File size: 18.0 KB
Line 
1#ifndef MC_VIDEOPLAYER_H
2#define MC_VIDEOPLAYER_H
3
4extern struct skin* skin;
5extern struct screensaver* screensaver;
6
7void screenmc_videoplayer()
8{
9        char* filename = NULL;
10        char* tmppolicy = NULL;
11        char* currentdirectory = NULL;
12        char* selectedfile = NULL;
13        int rcret = 0, rcwait = 1000, playerret = 0, flag = 1, skip = 0, eof = 0, playinfobarcount = 0, playinfobarstatus = 1, tmpview = 0, playlist = 0, playertype = 0;
14        // workaround for grey background mvi
15        struct skin* blackscreen = getscreen("blackscreen");
16        drawscreen(blackscreen, 0);
17
18        // main screen
19        struct skin* apskin = getscreen("mc_videoplayer");
20        struct skin* filelistpath = getscreennode(apskin, "mc_filelistpath");
21        struct skin* filelist = getscreennode(apskin, "mc_filelist");
22        struct skin* listbox = getscreennode(apskin, "listbox");
23        struct skin* b2 = getscreennode(apskin, "b2");
24        struct skin* b3 = getscreennode(apskin, "b3");
25        struct skin* b4 = getscreennode(apskin, "b4");
26       
27        struct skin* skin_cover = getscreennode(apskin, "cover");
28//      skin_cover->hidden = YES;
29                       
30        currentdirectory = ostrcat(currentdirectory, getconfig("mc_videoplayerpath", NULL), 1, 0);
31        selectedfile = ostrcat(selectedfile, getconfig("mc_selectedfile", NULL), 1, 0);
32
33        // enable listbox and set hidden
34        listbox->aktpage = -1;
35        listbox->aktline = 0;
36        listbox->hidden = YES;
37
38        // read configs
39        int view = getconfigint("vp_view", NULL);
40        int skip13 = getconfigint("skip13", NULL);
41        int skip46 = getconfigint("skip46", NULL);
42        int skip79 = getconfigint("skip79", NULL);
43
44        // save policy
45        tmppolicy = getpolicy();
46       
47        // set allowed filemask
48        char* filemask = NULL;
49        if((status.expertmodus > 0) || (file_exist("/var/swap/etc/.mcfull")))
50                filemask = ostrcat("*.m3u *.pls *.ifo *.rar *.iso *.img *.avi *.dat *.divx *.flv *.mkv *.m4v *.mp4 *.mov *.mpg *.mpeg *.mts *.m2ts *.trp *.ts *.vdr *.vob *.wmv *.rm", NULL, 0, 0);
51        else
52                filemask = ostrcat("*.m3u *.pls *.avi *.mkv *.mpg *.mpeg *.ts", NULL, 0, 0);
53       
54        // disable global transparent/hangtime
55        setfbtransparent(255);
56        status.hangtime = 99999;
57        status.playspeed = 0, status.play = 0, status.pause = 0, status.random = 0;
58
59        debug(50, "start screenmc_videoplayer view=%d", view);
60
61        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
62
63        if(getconfigint("screensaver", NULL) == 1)
64                initscreensaver();
65
66        tmpview = view;
67        mc_changeview(view, filelist);
68
69        getfilelist(apskin, filelistpath, filelist, currentdirectory, filemask, tmpview, selectedfile);
70        addscreenrc(apskin, filelist);
71
72        char* savecmd = NULL;
73                       
74        while(1)
75        {
76                rcret = waitrc(apskin, rcwait, 0);
77//              debug(50, "while status play=%d", status.play);
78
79                if((status.play == 1) || (status.playspeed != 0))
80                {
81                        playinfobarcount ++;
82                        if(playinfobarstatus > 0)
83                        {
84                                screenplayinfobar(filename, 0, playertype, 0);
85                        }
86                        if(playinfobarstatus == 1 && playinfobarcount >= getconfigint("infobartimeout", NULL))
87                        {
88                                playinfobarstatus = 0;
89                                screenplayinfobar(NULL, 1, playertype, 0);
90                        }
91                }
92                else if(status.filelistextend == 5 && filelist->select != NULL)
93                {
94                        char* cmd = NULL;
95                        cmd = ostrcat(cmd, filelist->select->filelist->imdbpath, 1, 0);
96                        cmd = ostrcat(cmd, ".jpg", 1, 0);                       
97                        changepic(skin_cover, cmd);
98                        drawscreen(apskin, 0);
99
100                        free(cmd), cmd = NULL;
101                        cmd = ostrcat(cmd, filelist->select->filelist->imdbpath, 1, 0);
102                        cmd = ostrcat(cmd, ".backdrop.mvi", 1, 0);
103
104                        if(!file_exist(cmd)){
105                                free(cmd), cmd = NULL;
106                                cmd = ostrcat(cmd, "/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 1, 0);
107                        }
108
109                        if(savecmd == NULL)
110                        {
111                                singlepicstart(cmd, 0);
112                                free(savecmd), savecmd = NULL;
113                                savecmd = ostrcat(savecmd, cmd, 1, 0);
114                        }
115                        else
116                        {
117                                if(ostrcmp(savecmd, cmd) != 0)
118                                {
119                                        singlepicstart(cmd, 0);
120                                        free(savecmd), savecmd = NULL;
121                                        savecmd = ostrcat(savecmd, cmd, 1, 0);
122                                }
123                        }
124                        free(cmd), cmd = NULL;
125                }
126               
127                if(rcret == getrcconfigint("rc1", NULL))
128                {
129                        if((status.play == 1) || (status.playspeed != 0))
130                                playrcjumpr(filename, skip13, &playinfobarstatus, &playinfobarcount, playertype, flag);
131                }
132                else if(rcret == getrcconfigint("rc4", NULL))
133                {
134                        if((status.play == 1) || (status.playspeed != 0))
135                                playrcjumpr(filename, skip46, &playinfobarstatus, &playinfobarcount, playertype, flag);
136                }
137                else if(rcret == getrcconfigint("rc7", NULL))
138                {
139                        if((status.play == 1) || (status.playspeed != 0))
140                                playrcjumpr(filename, skip79, &playinfobarstatus, &playinfobarcount, playertype, flag);
141                }
142                else if(rcret == getrcconfigint("rc3", NULL))
143                {
144                        if((status.play == 1) || (status.playspeed != 0))
145                                playrcjumpf(filename, skip13, &playinfobarstatus, &playinfobarcount, playertype, flag);
146                }
147                else if(rcret == getrcconfigint("rc6", NULL))
148                {
149                        if((status.play == 1) || (status.playspeed != 0))
150                                playrcjumpf(filename, skip46, &playinfobarstatus, &playinfobarcount, playertype, flag);
151                }
152                else if(rcret == getrcconfigint("rc9", NULL))
153                {
154                        if((status.play == 1) || (status.playspeed != 0))
155                                playrcjumpf(filename, skip79, &playinfobarstatus, &playinfobarcount, playertype, flag);
156                }
157                else if(rcret == getrcconfigint("rcleft", NULL))
158                {
159                        if((status.play == 1) || (status.playspeed != 0))
160                                playrcjumpr(filename, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
161                }
162                else if(rcret == getrcconfigint("rcright", NULL))
163                {
164                        if((status.play == 1) || (status.playspeed != 0))
165                                playrcjumpf(filename, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
166                }
167                else if(rcret == getrcconfigint("rcdown", NULL))
168                {
169                        if((status.play == 1) || (status.playspeed != 0))
170                                playrcjumpr(filename, 600, &playinfobarstatus, &playinfobarcount, playertype, flag);
171                }
172                else if(rcret == getrcconfigint("rcup", NULL))
173                {
174                        if((status.play == 1) || (status.playspeed != 0))
175                                playrcjumpf(filename, 600, &playinfobarstatus, &playinfobarcount, playertype, flag);
176                }
177
178                else if(rcret == getrcconfigint("rcff", NULL))
179                {
180                        if((status.play == 1) || (status.playspeed != 0))
181                                playrcff(filename, &playinfobarstatus, &playinfobarcount, playertype, flag);
182                }       
183                else if(rcret == getrcconfigint("rcfr", NULL))
184                {
185                        if((status.play == 1) || (status.playspeed != 0))
186                                playrcfr(filename, &playinfobarstatus, &playinfobarcount, playertype, flag);
187                }
188                else if(rcret == getrcconfigint("rcplay", NULL))
189                {
190                        if((status.play == 1) || (status.playspeed != 0))
191                                playrcplay(filename, &playinfobarstatus, &playinfobarcount, playertype, flag);
192                }
193                else if(rcret == getrcconfigint("rcpause", NULL))
194                {
195                        if((status.play == 1) || (status.pause == 1))
196                                playrcpause(filename, &playinfobarstatus, &playinfobarcount, playertype, flag);
197                }
198                else if(rcret == getrcconfigint("rcnext", NULL))
199                {
200                        if(status.play == 1)
201                                eof = 1;
202                }
203                else if(rcret == getrcconfigint("rcprev", NULL))
204                {
205                        if(status.play == 1)
206                                eof = 2;
207                }
208                else if(rcret == getrcconfigint("rcblue", NULL))
209                {
210                        if(status.play == 1)
211                                playrcblue(filename, playinfobarstatus, playertype, flag);
212                        else
213                        {
214                                if(status.repeat == 0)
215                                {
216                                        changetext(b4, _("Repeat-On"));
217                                        drawscreen(apskin, 0);
218                                        status.repeat = 1;
219                                }
220                                else
221                                {
222                                        status.repeat = 0;
223                                        changetext(b4, _("Repeat"));
224                                        drawscreen(apskin, 0);
225                                }
226                        }
227                }
228
229                else if(rcret == getrcconfigint("rcyellow", NULL))
230                {
231                        if(status.play == 1)
232                                playrcyellow(filename, playinfobarstatus, playertype, flag);                                           
233                        else
234                                playerrandom(apskin, filelist, listbox, b3, playlist, flag);
235                }
236                else if(rcret == getrcconfigint("rcred", NULL))
237                {
238                        if(status.play == 1)
239                                playrcred(filename, playinfobarstatus, playertype, flag);
240                        else
241                        {
242                                if(playlist == 0)
243                                {
244                                        int sort = screenmc_sort();
245                                        debug(50, "rcred: tmpsort=%d", sort);
246
247                                        addconfiginttmp("dirsort", sort);
248                                        mc_changeview(tmpview, filelist);
249
250                                        delownerrc(apskin);     
251                                        getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->text);
252                                        addscreenrc(apskin, filelist);
253                                        drawscreen(apskin, 0);
254                                }
255                        }
256                }
257                else if(rcret == getrcconfigint("rcgreen", NULL))
258                {
259                        if(status.play == 1)
260                                playrcgreen(filename, playinfobarstatus, playertype, flag);
261                        else
262                        {
263                                showplaylist(apskin, filelistpath, filelist, listbox, b2, 0, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
264                                drawscreen(apskin, 0);
265                                continue;                       
266                        }
267                }
268                else if(rcret == getrcconfigint("rctext", NULL) || rcret == getrcconfigint("rcsubtitel", NULL))
269                {               
270                        if(status.play == 1)
271                                playrctext(filename, playinfobarstatus, playertype, flag);     
272                }
273                else if(rcret == getrcconfigint("rcmenu", NULL))
274                {
275                        if(status.play == 0 && status.pause == 0)
276                        {
277                                debug(50, "rcmenu: settings");
278                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
279                                view = getconfigint("vp_view", NULL);
280                                screenmc_videoplayer_settings();
281                               
282                                if(view != getconfigint("vp_view", NULL))
283                                {
284                                        printf("view changed > change tmpview\n");
285                                        tmpview = getconfigint("vp_view", NULL);
286                                }
287                               
288                                mc_changeview(tmpview, filelist);
289
290                                delownerrc(apskin);     
291                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->text);
292                                addscreenrc(apskin, filelist);
293                                drawscreen(apskin, 0);
294                        }
295                }
296                else if(rcret == getrcconfigint("rcinfo", NULL))
297                {
298                        printf("Title: %s\n", playergetinfo("Title"));
299                        printf("Artist: %s\n", playergetinfo("Artist"));
300                        printf("Album: %s\n", playergetinfo("Album"));
301                        printf("Year: %s\n", playergetinfo("Year"));
302                        printf("Genre: %s\n", playergetinfo("Genre"));
303                        printf("Comment: %s\n", playergetinfo("Comment"));
304                        printf("Track: %s\n", playergetinfo("Track"));
305                        printf("Copyright: %s\n", playergetinfo("Copyright"));
306                        printf("TestLibEplayer: %s\n", playergetinfo("TestLibEplayer"));
307                }
308                else if(rcret == getrcconfigint("rcstop", NULL))
309                {
310
311//                      if((status.play == 1) || (status.pause == 1))
312//                      {
313                                debug(50, "rcstop: stopplayback");
314                                playrcstop(playertype, flag);
315                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
316       
317                                apskin->hidden = NO;
318                                filelist->hidden = NO;
319                                listbox->hidden = YES;
320                                changetext(filelistpath, _(getconfig("mc_videoplayerpath", NULL)));
321                                changetext(b2, _("Filelist-Mode"));
322
323                                // switch filelist
324                                delownerrc(apskin);
325                                addscreenrc(apskin, filelist);
326                                // show skin
327                                setfbtransparent(255);
328                                drawscreen(apskin, 0);
329
330                                sleep(1);
331
332                                playinfobarcount = 0;
333                                playinfobarstatus = 1;
334                                status.playspeed = 0;
335                                status.pause = 0;
336                                status.play = 0;
337                                playlist = 0;
338                                playinfobarcount = 0;
339                               
340                                if(playertype == 1)
341                                        playerafterendts();
342                                else
343                                        playerafterend();
344                       
345                                writevfd("VideoPlayer Filelist-Mode");
346//                      }
347                }
348                else if(rcret == getrcconfigint("rcexit", NULL))
349                {
350                        debug(50, "exit - save mc_videoplayerpath: %s", filelistpath->text);
351                        if(playlist == 0)
352                        {
353                                if(ostrcmp(getconfig("mc_videoplayerpath", NULL), filelistpath->text) != 0)
354                                        addconfig("mc_videoplayerpath", filelistpath->text);
355                                if(ostrcmp(getconfig("mc_selectedfile", NULL), filelist->select->name) != 0)
356                                        addconfig("mc_selectedfile", filelist->select->name);
357                        }
358
359                        playrcstop(playertype, flag);
360                        // show skin
361                        setfbtransparent(255);
362                        sleep(1);
363                        apskin->hidden = NO;
364                        filelist->hidden = NO;
365                        listbox->hidden = YES;
366                        changetext(b2, _("Filelist-Mode"));
367                        changetext(b3, _("Random"));
368                        changetext(b4, _("Repeat"));                                                                           
369                        status.playspeed = 0;
370                        status.pause = 0;
371                        status.play = 0;
372                        status.random = 0;
373                        status.repeat = 0;
374                        playlist = 0;
375                        writevfd("Mediacenter");
376                        playinfobarcount = 0;
377       
378                        printf("exit: view=%d tmpview=%d\n", view, tmpview);                   
379                        status.filelistextend = 0;
380                        break;
381                }
382                else if(rcret == getrcconfigint("rcok", NULL))
383                {
384                        if((status.play == 1) || (status.playspeed != 0))
385                        {
386                                playrcok(filename, playinfobarstatus, playertype, flag);
387                                continue;
388                        }
389
390                        playinfobarcount = 0;
391                        playinfobarstatus = 1;
392                        status.playspeed = 0;
393                        status.pause = 0;
394//                      status.play = 0;
395//                      playlist = 0;
396                        playinfobarcount = 0;
397
398                        if(playlist == 1 && listbox->select != NULL)
399                        {
400                                debug(50, "listbox->select->name: %s", listbox->select->name);
401                                filename = ostrcat("", listbox->select->name, 0, 0);
402
403                                if(getconfigint("playertype", NULL) == 1 && (cmpfilenameext(filename, ".ts") == 0 || cmpfilenameext(filename, ".mts") == 0 || cmpfilenameext(filename, ".m2ts") == 0))
404                                        playertype = 1;
405                                else
406                                        playertype = 0;
407
408                                changetext(b2, _("Playlist-Mode"));
409                       
410                                debug(50, "screensaver title: %s", listbox->select->text);
411                                if(screensaver != NULL && screensaver->type == 0)
412                                        screensaver->value = listbox->select->text;
413
414                                debug(50, "playerstop");
415                                playrcstop(playertype, flag);
416//                              sleep(1);
417//                              drawscreen(infobar, 0);
418
419                                debug(50, "playerstart: %s", filename);
420                                eof = 0;
421
422                                delownerrc(apskin);
423                                setfbtransparent(255);
424//////////
425                                servicestop(status.aktservice, 1, 1);
426                                drawscreen(skin, 0);
427                                setfbtransparent(255);
428                                debug(50, "check");
429                                debug(50, "autostart_playlist: %d", getconfigint("vp_autostart_playlist", NULL));
430                                debug(50, "status.play: %d", status.play);
431                                debug(50, "flag: %d", flag);
432///////////
433                                debug(50, "playertype: %d", playertype);
434                                if(playertype == 1)
435                                        playerret = playerstartts(filename, 0);
436                                else
437                                        playerret = playerstart(filename);
438
439                                playwritevfd(filename);
440
441                                #ifndef SIMULATE
442                                        if(playerret != 0)
443                                        {
444                                                writevfd("VideoPlayer Filelist-Mode");
445                                                status.play = 0;
446                                                playlist = 0;
447                                                status.playspeed = 0;
448                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
449
450                                                changetext(filelistpath, _(getconfig("mc_videoplayerpath", NULL)));
451                                                filelist->hidden = NO;
452                                                listbox->hidden = YES;
453
454                                                addscreenrc(apskin, filelist);
455                                                drawscreen(apskin, 0);
456                                                continue;
457                                        }
458                                #endif
459
460                                screenplayinfobar(filename, 0, playertype, 0);                 
461                                status.play = 1;
462                               
463                                free(status.playfile); status.playfile = NULL;
464                                status.playfile = ostrcat(filename, "", 0, 0);
465                        }
466                        else if(filelist->select != NULL && filelist->select->input != NULL)
467                        {
468                                // workaround dont open folder on rcchup
469                                if(skip == 1)
470                                {
471                                        drawscreen(apskin, 0);
472                                        writerc(getrcconfigint("rcok", NULL));
473                                        skip = 0;
474                                }
475                                else
476                                {
477                                        debug(50, "mc_mounter_chk start");
478                                        mc_mounter_chk(filelistpath);
479                                        debug(50, "mc_mounter_chk done");
480                                }
481                        }
482                        else if(filelist->select != NULL && filelist->select->input == NULL)
483                        {
484                                if(ostrcmp(getconfig("mc_videoplayerpath", NULL), filelistpath->text) != 0)
485                                        addconfig("mc_videoplayerpath", filelistpath->text);
486
487                                debug(50, "filelist->select->text: %s", filelist->select->text);
488                                filename = createpath(filelistpath->text, filelist->select->name);
489                                printf("name: %s\n",filelist->select->name);
490                                printf("text: %s\n",filelist->select->text);
491
492
493                                if(getconfigint("playertype", NULL) == 1 && (cmpfilenameext(filename, ".ts") == 0 || cmpfilenameext(filename, ".mts") == 0 || cmpfilenameext(filename, ".m2ts") == 0))         
494                                        playertype = 1;
495                                else
496                                        playertype = 0;
497
498                                if(!strncmp(".rar",filename+strlen(filename)-4,4) || !strncmp(".iso",filename+strlen(filename)-4,4) || !strncmp(".img",filename+strlen(filename)-4,4))
499                                {
500                                        debug(50, "mc_mounter_main filename: %s", filename);
501                                        //addconfig("mc_videoplayerpath", filelistpath->text);
502                                        currentdirectory = ostrcat("", getconfig("mc_videoplayerpath", NULL), 0, 0);
503                                        selectedfile = ostrcat(selectedfile, getconfig("mc_selectedfile", NULL), 0, 0);
504
505                                        mc_mounter_main(0,filename,filelistpath,filelist,apskin,filemask,tmpview,currentdirectory);
506                                        debug(50, "mc_mounter_main done");
507       
508                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
509                                        continue;
510                                }
511                                else if(!strncmp(".m3u",filename+strlen(filename)-4,4) || !strncmp(".pls",filename+strlen(filename)-4,4)) 
512                                {
513                                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 1, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
514
515                                        if(getconfigint("vp_autostart_playlist", NULL) == 0)
516                                                drawscreen(apskin, 0);
517                                        continue;
518
519                                }
520
521                                changetext(b2, _("Filelist-Mode"));
522                       
523                                if(screensaver != NULL && screensaver->type == 0)
524                                        screensaver->value = (void*)filelist->select->text;
525
526                                debug(50, "playerstop");
527                                playrcstop(playertype, flag);
528//                              sleep(1);
529
530                                servicestop(status.aktservice, 1, 1);
531                                drawscreen(skin, 0);
532
533                                delownerrc(apskin);
534                                setfbtransparent(255);
535
536                                debug(50, "playerstart: %s", filename);
537                                eof = 0;
538
539                                debug(50, "playertype: %d", playertype);
540                                if(playertype == 1)
541                                        playerret = playerstartts(filename, 0);
542                                else
543                                        playerret = playerstart(filename);
544
545                                playwritevfd(filename);
546
547                                #ifndef SIMULATE
548                                        if(playerret != 0)
549                                        {
550                                                writevfd("VideoPlayer Filelist-Mode");
551                                                status.play = 0;
552                                                status.playspeed = 0;
553                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
554                                                addscreenrc(apskin, filelist);
555//                                              drawscreen(apskin, 0);
556                                                continue;
557                                        }
558                                #endif
559                                screenplayinfobar(filename, 0, playertype, 0);
560                                status.play = 1;
561
562                                free(status.playfile); status.playfile = NULL;
563                                status.playfile = ostrcat(filename, "", 0, 0);
564                        }
565                }
566
567                if(eof >=1 || (playertype == 0 && playerisplaying() == 0) || (playertype == 1 && playerisplayingts() == 0))
568                {
569                        if(status.play == 1)
570                        {
571                                setfbtransparent(0);
572                                apskin->hidden = NO;
573                                drawscreen(skin, 0);
574                                playereof(apskin, filelist, listbox, filelistpath, b2, NULL, NULL, NULL, &skip, &eof, &playlist, playertype, flag);
575                        }
576                }
577        }
578
579        deinitscreensaver();
580        status.hangtime = getconfigint("hangtime", NULL);
581        delconfigtmp("dirsort");
582
583        delmarkedscreennodes(apskin, FILELISTDELMARK);
584        delownerrc(apskin);
585        clearscreen(apskin);
586
587        free(filename), filename = NULL;
588        free(currentdirectory), currentdirectory = NULL;
589        free(selectedfile), selectedfile = NULL;
590
591        free(status.playfile); status.playfile = NULL;
592        if(tmppolicy != NULL)
593        {
594                setpolicy(tmppolicy);
595                free(tmppolicy);
596        }
597
598        if(playertype == 1)
599                playerafterendts();
600        else
601                playerafterend();
602
603                       
604        writevfd("Mediacenter");
605        debug(50, "closed");
606}
607
608
609
610#endif
611
Note: See TracBrowser for help on using the repository browser.