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

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

mc addtpk support

File size: 30.7 KB
Line 
1#ifndef MC_VIDEOPLAYER_H
2#define MC_VIDEOPLAYER_H
3
4extern struct skin* skin;
5extern struct screensaver* screensaver;
6extern struct mediadb* mediadb;
7
8void screenmc_videoplayer()
9{
10        // workaround for grey background mvi
11        struct skin* loadmediadb = getscreen("loading");
12        struct skin* blackscreen = getscreen("blackscreen");
13        drawscreen(blackscreen, 0, 0);
14        drawscreen(loadmediadb, 0, 0);
15
16        readmediadb(getconfig("mediadbfile", NULL), 0, 0);
17
18        char* lastid = NULL, *filename = NULL, *tmppolicy = NULL ,*currentdirectory = NULL, *selectedfile = NULL, *tmpstr = NULL;
19        int rcret = 0, rcwait = 1000, playerret = 0, flag = 1, skip = 0, eof = 0, playinfobarcount = 0, playinfobarstatus = 1, tmpview = 0, playlist = 0, playertype = 0, mviwait = 0, mvinum = 0, exit = 0;
20
21        tmpstr = ostrcat(getconfig("mc_vp_dirsort", NULL), NULL, 0, 0);
22        addconfigtmp("dirsort", tmpstr);
23        free(tmpstr), tmpstr = NULL;
24
25        // main screen
26        struct skin* apskin = getscreen("mc_videoplayer");
27        struct skin* filelistpath = getscreennode(apskin, "filelistpath");
28        struct skin* filelist = getscreennode(apskin, "filelist");
29        struct skin* listbox = getscreennode(apskin, "listbox");
30        struct skin* b2 = getscreennode(apskin, "b2");
31        struct skin* b3 = getscreennode(apskin, "b3");
32        struct skin* b4 = getscreennode(apskin, "b4");
33        struct skin* plot = getscreennode(apskin, "plot");
34        struct skin* title = getscreennode(apskin, "title");
35        struct skin* thumb = getscreennode(apskin, "thumb");
36        struct skin* stars = getscreennode(apskin, "stars");
37
38        if(getconfigint("mc_vp_uselastdir", NULL) == 1)
39        {
40                currentdirectory = ostrcat(currentdirectory, getconfig("mc_vp_path", NULL), 1, 0);
41                selectedfile = ostrcat(selectedfile, getconfig("mc_vp_selectedfile", NULL), 1, 0);
42        }
43        else
44        {
45                currentdirectory = ostrcat(currentdirectory, getconfig("mc_vp_defaultdir", NULL), 1, 0);               
46        }
47
48        // enable listbox and set hidden
49        listbox->aktpage = -1;
50        listbox->aktline = 0;
51        listbox->hidden = YES;
52
53        // read configs
54        int view = getconfigint("mc_vp_view", NULL);
55        int skip13 = getconfigint("skip13", NULL);
56        int skip46 = getconfigint("skip46", NULL);
57        int skip79 = getconfigint("skip79", NULL);
58
59        // save policy
60        tmppolicy = getpolicy();
61       
62        // set allowed filemask
63        char* filemask = NULL;
64        if(status.expertmodus >= 11 || file_exist("/mnt/swapextensions/etc/.codecpack") || file_exist("/var/swap/etc/.codecpack") || file_exist("/var/etc/.codecpack"))
65                filemask = ostrcat("*.m3u *.pls *.ifo *.rar *.iso *.img *.avi *.dat *.divx *.flv *.mkv *.m4v *.mp4 *.mov *.mpg *.mpeg *.mts *.m2ts *.trp *.ts *.vdr *.vob *.rm *.wmv", NULL, 0, 0);
66        else
67                filemask = ostrcat("*.m3u *.pls *.avi *.mkv *.mpg *.mpeg *.ts", NULL, 0, 0);
68       
69        // disable global transparent/hangtime
70//      setfbtransparent(255);
71        status.hangtime = 99999;
72        status.playspeed = 0, status.play = 0, status.pause = 0, status.random = 0;
73
74        debug(50, "start screenmc_videoplayer view=%d", view);
75
76//      singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
77        char* defaultmvi = NULL;
78        defaultmvi = createpluginpath("/mc/skin/default.mvi", 0);
79        singlepicstart(defaultmvi, 0);
80
81        if(getconfigint("screensaver", NULL) == 1)
82                initscreensaver();
83
84        tmpview = view;
85        mc_changeview(view, filelist, apskin, flag);
86        thumb->hidden = YES;
87        plot->hidden = YES;
88        title->hidden = YES;
89        stars->hidden = YES;
90
91        getfilelist(apskin, filelistpath, filelist, currentdirectory, filemask, tmpview, selectedfile);
92        addscreenrc(apskin, filelist);
93
94        char* savecmd = NULL;
95
96        if(!file_exist("/mnt/swapextensions/player"))   
97                mkdir("/mnt/swapextensions/player", 0777);
98       
99        int refresh = 0;                       
100        while(1)
101        {
102               
103                rcret = waitrcext(apskin, rcwait, 0, tmpview);
104                if(filelist->select != NULL && filelist->select->input != NULL)
105                        refresh = 1;
106                else
107                        refresh = 0;
108                       
109                if((status.play == 1) || (status.playspeed != 0))
110                {
111                        playinfobarcount ++;
112                        if(playinfobarstatus > 0)
113                        {
114                                screenplayinfobar(filename, NULL, 0, playertype, 0);
115                        }
116                        if(playinfobarstatus == 1 && playinfobarcount >= getconfigint("infobartimeout", NULL))
117                        {
118                                playinfobarstatus = 0;
119                                screenplayinfobar(NULL, NULL, 1, playertype, 0);
120                        }
121                }
122                else if(exit == 0 && tmpview == 3 && filelist->select != NULL && status.play == 0 && status.pause == 0)
123                {
124                        char* cmd = NULL;
125                        char* pic = NULL;
126
127                        int waittime = 5, foundthumb = 0, foundplot = 0, foundtitle = 0, foundstars = 0;
128                        waittime = getconfigint("mc_vp_backdrop_interval", NULL);
129
130                        if(filelist->select != NULL && filelist->select->input == NULL)
131                        {
132                                struct mediadb* mnode = getmediadb(filelistpath->text, filelist->select->name, 0);
133
134                                if(mnode != NULL)
135                                {
136                                        if(mnode->id != NULL)
137                                        {
138                                                if(ostrcmp(lastid, mnode->id) != 0)                                     
139                                                {
140                                                        free(lastid), lastid = NULL;
141                                                        lastid = ostrcat(lastid, mnode->id, 1, 0);
142                                                        mvinum = 1;
143                                                        mviwait = waittime;
144                                                }
145                                                else
146                                                {
147                                                        if(mvinum == mnode->backdropcount)
148                                                                mvinum = 1;
149
150                                                        if(mviwait > waittime && mvinum < mnode->backdropcount)
151                                                                mvinum++;
152                                                }
153
154                                                tmpstr = ostrcat(tmpstr, getconfig("mediadbpath", NULL), 1, 0);
155                                                tmpstr = ostrcat(tmpstr, "/", 1, 0);                                                                                                                                                   
156                                                tmpstr = ostrcat(tmpstr, mnode->id, 1, 0);
157       
158                                                pic = ostrcat(tmpstr, "_thumb.jpg", 0, 0);
159                                               
160                                                cmd = ostrcat(tmpstr, "_backdrop", 0, 0);
161                                                cmd = ostrcat(cmd, oitoa(mvinum), 1, 0);
162                                                cmd = ostrcat(cmd, ".mvi", 1, 0);
163                                                free(tmpstr), tmpstr = NULL;
164                                        }
165                                        if(mnode->plot != NULL)
166                                                changetext(plot, mnode->plot);
167                                        if(mnode->title != NULL)
168                                                changetext(title, mnode->title);
169
170                                        if(mnode->poster == NULL)
171                                        {
172                                                thumb->hidden = YES;
173                                                free(pic), pic = NULL;
174                                                foundthumb = 0;
175                                        }
176                                        else
177                                        {
178                                                thumb->hidden = NO;
179                                                changepic(thumb, pic);
180                                                free(pic), pic = NULL;
181                                                foundthumb = 1;
182                                        }
183                                       
184                                        if(mnode->plot == NULL)
185                                        {
186                                                foundplot = 0;
187                                                plot->hidden = YES;
188                                        }
189                                        else
190                                        {
191                                                foundplot = 1;
192                                                plot->hidden = NO;
193                                        }
194                                       
195                                        if(mnode->title == NULL)
196                                        {
197                                                foundtitle = 0;
198                                                title->hidden = YES;
199                                        }
200                                        else
201                                        {
202                                                foundtitle = 1;
203                                                title->hidden = NO;
204                                        }
205                                       
206                                        if(mnode->rating != 0)
207                                        {
208                                                foundstars = 1;
209                                                int rating = mnode->rating;
210                                                if(rating == 10)
211                                                        changepic(stars, "%pluginpath%/mc/skin/stars10.png");
212                                                else if(rating > 9)
213                                                        changepic(stars, "%pluginpath%/mc/skin/stars9x.png");
214                                                else if(rating == 9)
215                                                        changepic(stars, "%pluginpath%/mc/skin/stars9.png");
216                                                else if(rating > 8)
217                                                        changepic(stars, "%pluginpath%/mc/skin/stars8x.png");
218                                                else if(rating == 8)
219                                                        changepic(stars, "%pluginpath%/mc/skin/stars8.png");
220                                                else if(rating > 7)
221                                                        changepic(stars, "%pluginpath%/mc/skin/stars7x.png");
222                                                else if(rating == 7)
223                                                        changepic(stars, "%pluginpath%/mc/skin/stars7.png");
224                                                else if(rating > 6)
225                                                        changepic(stars, "%pluginpath%/mc/skin/stars6x.png");
226                                                else if(rating == 6)
227                                                        changepic(stars, "%pluginpath%/mc/skin/stars6.png");
228                                                else if(rating > 5)
229                                                        changepic(stars, "%pluginpath%/mc/skin/stars5x.png");
230                                                else if(rating == 5)
231                                                        changepic(stars, "%pluginpath%/mc/skin/stars5.png");
232                                                else if(rating > 5)
233                                                        changepic(stars, "%pluginpath%/mc/skin/stars5x.png");
234                                                else if(rating == 5)
235                                                        changepic(stars, "%pluginpath%/mc/skin/stars5.png");
236                                                else if(rating > 4)
237                                                        changepic(stars, "%pluginpath%/mc/skin/stars4x.png");
238                                                else if(rating == 4)
239                                                        changepic(stars, "%pluginpath%/mc/skin/stars4.png");
240                                                else if(rating > 3)
241                                                        changepic(stars, "%pluginpath%/mc/skin/stars3x.png");
242                                                else if(rating == 3)
243                                                        changepic(stars, "%pluginpath%/mc/skin/stars3.png");
244                                                else if(rating > 2)
245                                                        changepic(stars, "%pluginpath%/mc/skin/stars2x.png");
246                                                else if(rating == 2)
247                                                        changepic(stars, "%pluginpath%/mc/skin/stars2.png");
248                                                else if(rating > 1)
249                                                        changepic(stars, "%pluginpath%/mc/skin/stars1x.png");
250                                                else if(rating == 1)
251                                                        changepic(stars, "%pluginpath%/mc/skin/stars1.png");
252                                                else if(rating > 0)
253                                                        changepic(stars, "%pluginpath%/mc/skin/stars0x.png");
254                                                else
255                                                        changepic(stars, NULL);
256                                                stars->hidden = NO;
257                                        }
258                                        else
259                                        {
260                                                foundstars = 0;
261                                                changepic(stars, NULL);
262                                                stars->hidden = YES;
263                                        }
264                                }
265                                else   
266                                {
267                                        refresh = 1;                           
268                                        foundthumb = 0;
269                                        foundplot = 0;
270                                        foundtitle = 0;
271                                        foundstars = 0;
272                                        thumb->hidden = YES;
273                                        plot->hidden = YES;
274                                        title->hidden = YES;
275                                        stars->hidden = YES;
276                                        free(pic), pic = NULL;
277                                }
278                                       
279                                drawscreen(apskin, 0, 0);
280                        }
281
282                        debug(50, "cmd: %s", cmd);     
283                        if(!file_exist(cmd))
284                        {
285                                free(cmd), cmd = NULL;
286//                              cmd = ostrcat(cmd, "/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 1, 0);
287                                cmd = ostrcat(cmd, defaultmvi, 1, 0);
288                                mviwait = waittime;
289                                if(foundthumb == 0)
290                                        thumb->hidden = YES;
291                                if(foundplot == 0)
292                                        plot->hidden = YES;
293                                if(foundtitle == 0)
294                                        title->hidden = YES;
295                                if(foundstars == 0)                                     
296                                        stars->hidden = YES;
297
298                                drawscreen(apskin, 0, 0);
299                        }
300
301                        if(savecmd == NULL)
302                        {
303                                singlepicstart(cmd, 0);
304                                free(savecmd), savecmd = NULL;
305                                savecmd = ostrcat(savecmd, cmd, 1, 0);
306                        }
307                        else
308                        {
309                                if((refresh == 1 ) || (exit == 0 && ostrcmp(savecmd, cmd) != 0 && mviwait > waittime - 1))
310                                {
311                                        singlepicstart(cmd, 0);
312                                        free(savecmd), savecmd = NULL;
313                                        savecmd = ostrcat(savecmd, cmd, 1, 0);
314                                        mviwait = 0;
315                                }
316                                else if(waittime == 0)
317                                {
318                                        debug(50, "disable Backdrop Interval");
319                                }
320                                else
321                                        mviwait++;
322                        }
323                        free(cmd), cmd = NULL;
324                }
325
326                if (rcret == getrcconfigint("rcrecord", NULL))
327                {
328                        system("grab -j 100");
329                        textbox(_("Message"), _("Shooting Background done !\nSave Screenshoot Path: /tmp/screenshot.jpg"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0);
330                }
331                else if(rcret == getrcconfigint("rc2", NULL))
332                {
333                        if((status.play == 1) || (status.playspeed != 0))
334                                playrcjumpto(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
335                }
336                else if(rcret == getrcconfigint("rc1", NULL))
337                {
338                        if((status.play == 1) || (status.playspeed != 0))
339                                playrcjumpr(filename, NULL, skip13, &playinfobarstatus, &playinfobarcount, playertype, flag);
340                }
341                else if(rcret == getrcconfigint("rc4", NULL))
342                {
343                        if((status.play == 1) || (status.playspeed != 0))
344                                playrcjumpr(filename, NULL, skip46, &playinfobarstatus, &playinfobarcount, playertype, flag);
345                }
346                else if(rcret == getrcconfigint("rc7", NULL))
347                {
348                        if((status.play == 1) || (status.playspeed != 0))
349                                playrcjumpr(filename, NULL, skip79, &playinfobarstatus, &playinfobarcount, playertype, flag);
350                }
351                else if(rcret == getrcconfigint("rc3", NULL))
352                {
353                        if((status.play == 1) || (status.playspeed != 0))
354                                playrcjumpf(filename, NULL, skip13, &playinfobarstatus, &playinfobarcount, playertype, flag);
355                }
356                else if(rcret == getrcconfigint("rc6", NULL))
357                {
358                        if((status.play == 1) || (status.playspeed != 0))
359                                playrcjumpf(filename, NULL, skip46, &playinfobarstatus, &playinfobarcount, playertype, flag);
360                }
361                else if(rcret == getrcconfigint("rc9", NULL))
362                {
363                        if((status.play == 1) || (status.playspeed != 0))
364                                playrcjumpf(filename, NULL, skip79, &playinfobarstatus, &playinfobarcount, playertype, flag);
365                }
366                else if(rcret == getrcconfigint("rcleft", NULL))
367                {
368                        if((status.play == 1) || (status.playspeed != 0))
369                                playrcjumpr(filename, NULL, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
370                }
371                else if(rcret == getrcconfigint("rcright", NULL))
372                {
373                        if((status.play == 1) || (status.playspeed != 0))
374                                playrcjumpf(filename, NULL, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
375                }
376                else if(rcret == getrcconfigint("rcdown", NULL))
377                {
378                        if((status.play == 1) || (status.playspeed != 0))
379                                playrcjumpr(filename, NULL, 600, &playinfobarstatus, &playinfobarcount, playertype, flag);
380                }
381                else if(rcret == getrcconfigint("rcup", NULL))
382                {
383                        if(status.play == 1 || status.playspeed != 0 || status.pause == 1)
384                                playrcjumpf(filename, NULL, 600, &playinfobarstatus, &playinfobarcount, playertype, flag);
385                }
386
387                else if(rcret == getrcconfigint("rcff", NULL))
388                {
389                        if(status.play == 1 || status.playspeed != 0 || status.pause == 1)
390                                playrcff(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
391                }       
392                else if(rcret == getrcconfigint("rcfr", NULL))
393                {
394                        if((status.play == 1) || (status.playspeed != 0))
395                                playrcfr(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
396                }
397                else if(rcret == getrcconfigint("rcpause", NULL) || ((checkbox("ATEMIO520") == 1 || checkbox("ATEMIO530") == 1) && rcret == getrcconfigint("rcplay", NULL) && status.pause == 0 && status.slowspeed == 0 && status.playspeed == 0 && ostrcmp(getconfig("remotecontrol", NULL), "0") == 0))
398                {
399                        if((status.play == 1) || (status.pause == 1) || (status.playspeed != 0))
400                                playrcpause(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
401                }
402                else if(rcret == getrcconfigint("rcplay", NULL))
403                {
404                        if((status.play == 1) || (status.pause == 1) || (status.playspeed != 0))
405                                playrcplay(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
406                }
407                else if(rcret == getrcconfigint("rcnext", NULL))
408                {
409                        if(status.play == 1)
410                                eof = 1;
411                }
412                else if(rcret == getrcconfigint("rcprev", NULL))
413                {
414                        if(status.play == 1)
415                                eof = 2;
416                }
417                else if(rcret == getrcconfigint("rcblue", NULL))
418                {
419                        if(status.play == 1)
420                                playrcblue(filename, NULL, playinfobarstatus, playertype, flag);
421                        else
422                        {
423                                if(status.repeat == 0)
424                                {
425                                        changetext(b4, _("Repeat-On"));
426                                        drawscreen(apskin, 0, 0);
427                                        status.repeat = 1;
428                                }
429                                else
430                                {
431                                        status.repeat = 0;
432                                        changetext(b4, _("Repeat"));
433                                        drawscreen(apskin, 0, 0);
434                                }
435                        }
436                }
437                else if(rcret == getrcconfigint("rcyellow", NULL))
438                {
439                        if(status.play == 1)
440                                playrcyellow(filename, NULL, playinfobarstatus, playertype, flag);                                             
441                        else
442                                playerrandom(apskin, filelist, listbox, b3, playlist, flag);
443                }
444                else if(rcret == getrcconfigint("rcred", NULL))
445                {
446                        if(status.play == 1)
447                                playrcred(filename, NULL, playinfobarstatus, playertype, flag);
448                        else
449                        {
450                                if(playlist == 0)
451                                {
452                                        int sort = screendirsort();
453                                        debug(50, "rcred: tmpsort=%d", sort);
454
455                                        // fixt grey if sorting >10s
456                                        drawscreen(skin, 0, 0);
457       
458                                        addconfiginttmp("dirsort", sort);
459                                        mc_changeview(tmpview, filelist, apskin, flag);
460
461                                        delownerrc(apskin);     
462                                        getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->name);
463                                        addscreenrc(apskin, filelist);
464                                        drawscreen(apskin, 0, 0);
465                                }
466                        }
467                }
468                else if(rcret == getrcconfigint("rcgreen", NULL))
469                {
470                        if(status.play == 1)
471                                playrcgreen(filename, NULL, playinfobarstatus, playertype, flag);
472                        else
473                        {
474                                showplaylist(apskin, filelistpath, filelist, listbox, b2, 0, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
475                                drawscreen(apskin, 0, 0);
476                                continue;                       
477                        }
478                }
479                else if(rcret == getrcconfigint("rctext", NULL) || rcret == getrcconfigint("rcsubtitel", NULL))
480                {               
481                        if(status.play == 1)
482                                playrctext(filename, NULL, playinfobarstatus, playertype, flag);       
483                }
484                else if(rcret == getrcconfigint("rcmenu", NULL))
485                {
486                        if(status.play == 0 && status.pause == 0)
487                        {
488                                refresh = 1;
489                                debug(50, "rcmenu: settings");
490//                              singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
491                                singlepicstart(defaultmvi, 0);
492                                view = getconfigint("mc_vp_view", NULL);
493                                printf("view in: %d\n", view);
494                                printf("tmpview in: %d\n", tmpview);
495
496                                screenmc_videoplayer_settings();
497                                drawscreen(blackscreen, 0, 0);
498                                drawscreen(loadmediadb, 0, 0);                         
499                                if(view != getconfigint("mc_vp_view", NULL))
500                                {
501                                        printf("view changed > change tmpview\n");
502                                        tmpview = getconfigint("mc_vp_view", NULL);
503                                }
504
505                                if(getconfig("mc_vp_dirsort", NULL) != getconfig("dirsort", NULL))
506                                {
507                                        char* tmpstr = NULL;
508                                        tmpstr = ostrcat(getconfig("mc_vp_dirsort", NULL), NULL, 0, 0);
509                                        addconfigtmp("dirsort", tmpstr);
510                                        free(tmpstr), tmpstr = NULL;
511                                }
512
513                                printf("1view in: %d\n", view);
514                                printf("1tmpview in: %d\n", tmpview);
515                               
516                                mc_changeview(tmpview, filelist, apskin, flag);
517
518                                drawscreen(blackscreen, 0, 0);
519                                drawscreen(loadmediadb, 0, 0);
520                                printf("2view in: %d\n", view);
521                                printf("2tmpview in: %d\n", tmpview);
522       
523                                delownerrc(apskin);
524                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->name);
525                                addscreenrc(apskin, filelist);
526                                drawscreen(apskin, 0, 0);
527                        }
528                }
529                else if(rcret == getrcconfigint("rcinfo", NULL))
530                {
531                        if(status.play == 0 && status.pause == 0)
532                        {
533                                drawscreen(blackscreen, 0, 0);
534                                if(filelist->select != NULL && filelist->select->input == NULL)
535                                {
536                                        filename = createpath(filelistpath->text, filelist->select->name);
537                                        debug(133, "filename: %s", filename);                           
538                                        playrcred(filename, NULL, playinfobarstatus, playertype, flag);
539                                }
540                        }
541                        else
542                                playrcplay(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
543
544                        if(status.play == 0 && status.pause == 0)
545                        {
546                                drawscreen(skin, 0, 0);
547                                drawscreen(blackscreen, 0, 0);
548                                drawscreen(loadmediadb, 0, 0);
549                                delownerrc(apskin);
550                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->name);
551                                addscreenrc(apskin, filelist);
552                                drawscreen(apskin, 0, 0);
553                        }       
554                }
555                else if(rcret == getrcconfigint("rcstop", NULL) || (rcret == getrcconfigint("rcexit", NULL) && status.play == 1))
556                {
557                        debug(50, "rcstop: stopplayback");
558                        drawscreen(blackscreen, 0, 0);
559                        drawscreen(loadmediadb, 0, 0);
560                        if(status.play == 1 && playertype == 0)
561                        {
562                                char* tmpfilename = ostrcat(filename, NULL, 0, 0);
563                                char* fileseek = ostrcat("/mnt/swapextensions/player/", basename(tmpfilename), 0, 0);
564                                fileseek = ostrcat(fileseek, ".se", 0, 0);
565                                FILE* fbseek = fopen(fileseek, "w");
566                                if(fbseek != NULL)
567                                {
568                                        off64_t pos = playergetpts() / 90000;
569                                        fprintf(fbseek,"%lld", pos);
570                                        fclose(fbseek);
571                                }
572                                free(fileseek), fileseek = NULL;
573                                free(tmpfilename), tmpfilename = NULL;
574                        }
575                       
576                        servicestop(status.aktservice, 1, 1);
577                        playrcstop(playertype, flag);
578                        drawscreen(blackscreen, 0, 0);
579                        drawscreen(loadmediadb, 0, 0);
580                        sleep(2);
581//                      singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
582                        singlepicstart(defaultmvi, 0);
583
584                        // show skin
585                        setfbtransparent(255);
586
587                        apskin->hidden = NO;
588                        filelist->hidden = NO;
589                        listbox->hidden = YES;
590                        changetext(filelistpath, _(getconfig("mc_vp_path", NULL)));
591                        changetext(b2, _("Filelist-Mode"));
592
593                        // switch filelist
594                        delownerrc(apskin);
595                        addscreenrc(apskin, filelist);
596                        // show skin
597                        drawscreen(apskin, 0, 0);
598
599                        setfbtransparent(255);
600                        clearscreen(loadmediadb);
601                        clearscreen(blackscreen);
602
603                        playinfobarcount = 0;
604                        playinfobarstatus = 1;
605                        status.playspeed = 0;
606                        status.pause = 0;
607                        status.play = 0;
608                        playlist = 0;
609                        playinfobarcount = 0;
610                       
611                        if(playertype == 1)
612                                playerafterendts();
613                        else
614                                playerafterend();
615               
616                        writevfdmenu("VideoPlayer Filelist-Mode");
617                }
618                else if(rcret == getrcconfigint("rcexit", NULL))
619                {
620                        exit = 1;
621                        debug(50, "exit - save mc_vp_path: %s", filelistpath->text);
622                        debug(50, "exit - save mc_vp_selectedfile: %s", filelist->select->name);
623                        drawscreen(blackscreen, 0, 0);
624                        drawscreen(loadmediadb, 0, 0);
625
626                        if(playlist == 0)
627                        {
628                                if(filelistpath->text != NULL && ostrcmp(getconfig("mc_vp_path", NULL), filelistpath->text) != 0)
629                                        addconfig("mc_vp_path", filelistpath->text);
630                                if(filelist->select != NULL && filelist->select->name != NULL && ostrcmp(getconfig("mc_vp_selectedfile", NULL), filelist->select->name) != 0)
631                                        addconfig("mc_vp_selectedfile", filelist->select->name);
632                        }
633
634                        if(status.play == 1 && playertype == 0)
635                        {
636                                char* tmpfilename = ostrcat(filename, NULL, 0, 0);
637                                char* fileseek = ostrcat("/mnt/swapextensions/player/", basename(tmpfilename), 0, 0);
638                                fileseek = ostrcat(fileseek, ".se", 0, 0);
639                                FILE* fbseek = fopen(fileseek, "w");
640                                if(fbseek != NULL)
641                                {
642                                        off64_t pos = playergetpts() / 90000;
643                                        fprintf(fbseek,"%lld", pos);
644                                        fclose(fbseek);
645                                }
646                                free(fileseek), fileseek = NULL;
647                                free(tmpfilename), tmpfilename = NULL;
648                        }
649
650//                      setfbtransparent(0);
651                        servicestop(status.aktservice, 1, 1);
652                        playrcstop(playertype, flag);
653                        drawscreen(blackscreen, 0, 0);
654                        drawscreen(loadmediadb, 0, 0);
655                        sleep(2);
656//                      singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
657                        singlepicstart(defaultmvi, 0);
658
659                        // show skin
660                        setfbtransparent(255);
661                        apskin->hidden = NO;
662                        filelist->hidden = NO;
663                        listbox->hidden = YES;
664                        changetext(b2, _("Filelist-Mode"));
665                        changetext(b3, _("Random"));
666                        changetext(b4, _("Repeat"));                                                                           
667                        status.playspeed = 0;
668                        status.pause = 0;
669                        status.play = 0;
670                        status.random = 0;
671                        status.repeat = 0;
672                        playlist = 0;
673                        writevfdmenu("Mediacenter");
674                        playinfobarcount = 0;
675       
676                        printf("exit: view=%d tmpview=%d\n", view, tmpview);
677                        unlink("/tmp/.autoscan");
678                        break;
679                }
680                else if(rcret == getrcconfigint("rcok", NULL))
681                {
682                        if((status.play == 1) || (status.playspeed != 0))
683                        {
684                                playrcok(filename, NULL, playinfobarstatus, playertype, flag);
685                                continue;
686                        }
687
688                        playinfobarcount = 0;
689                        playinfobarstatus = 1;
690                        status.playspeed = 0;
691                        status.pause = 0;
692//                      status.play = 0;
693//                      playlist = 0;
694                        playinfobarcount = 0;
695
696                        if(playlist == 1 && listbox->select != NULL)
697                        {
698                                debug(50, "listbox->select->name: %s", listbox->select->name);
699                                filename = ostrcat("", listbox->select->name, 0, 0);
700
701                                if(cmpfilenameext(filename, ".ts") == 0)
702                                        playertype = 1;
703                                else
704                                        playertype = 0;
705
706                                changetext(b2, _("Playlist-Mode"));
707                       
708                                debug(50, "screensaver title: %s", listbox->select->text);
709                                if(screensaver != NULL && screensaver->type == 0)
710                                        screensaver->value = listbox->select->text;
711
712                                debug(50, "playerstop");
713                                playrcstop(playertype, flag);
714//                              sleep(1);
715//                              drawscreen(infobar, 0, 0);
716
717                                debug(50, "playerstart: %s", filename);
718                                eof = 0;
719
720                                delownerrc(apskin);
721//                              setfbtransparent(255);
722//////////
723                                servicestop(status.aktservice, 1, 1);
724                                drawscreen(skin, 0, 0);
725//                              setfbtransparent(255);
726                                debug(50, "check");
727                                debug(50, "autostart_playlist: %d", getconfigint("mc_vp_autostart_playlist", NULL));
728                                debug(50, "status.play: %d", status.play);
729                                debug(50, "flag: %d", flag);
730///////////
731                                debug(50, "playertype: %d", playertype);
732                                if(playertype == 1)
733                                        playerret = playerstartts(filename, 0);
734                                else
735                                        playerret = playerstart(filename);
736
737                                playwritevfd(filename, NULL);
738
739                                #ifndef SIMULATE
740                                        if(playerret != 0)
741                                        {
742                                                writevfdmenu("VideoPlayer Filelist-Mode");
743                                                status.play = 0;
744                                                playlist = 0;
745                                                status.playspeed = 0;
746                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
747
748                                                changetext(filelistpath, _(getconfig("mc_vp_path", NULL)));
749                                                filelist->hidden = NO;
750                                                listbox->hidden = YES;
751
752                                                addscreenrc(apskin, filelist);
753                                                drawscreen(apskin, 0, 0);
754                                                continue;
755                                        }
756                                #endif
757
758                                screenplayinfobar(filename, NULL, 0, playertype, 0);                   
759                                status.play = 1;
760                               
761                                free(status.playfile); status.playfile = NULL;
762                                status.playfile = ostrcat(filename, "", 0, 0);
763                        }
764                        else if(filelist->select != NULL && filelist->select->input != NULL)
765                        {
766
767                                char* tmpfilename = ostrcat(filelistpath->text, NULL, 0, 0);                   
768
769                                // workaround dont open folder on rcchup
770                                if(skip == 1)
771                                {
772                                        drawscreen(apskin, 0, 0);
773                                        writerc(getrcconfigint("rcok", NULL));
774                                        skip = 0;
775                                }
776                                else if(!ostrncmp("video_ts", string_tolower(basename(tmpfilename)), 8))
777                                {
778                                        struct skin* dvdplayer = getplugin("DVD Player");
779                                        if(dvdplayer != NULL)
780                                        {
781                                                if(textbox(_("Message"), _("Found VIDEO_TS Folder, start with DVD-Player ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 5, 0) == 1)
782                                                {
783                                                        void (*startplugin)(char*, int);
784                                                        startplugin = dlsym(dvdplayer->pluginhandle, "screendvdplay");
785                                                        if(startplugin != NULL)
786                                                        {
787                                                                debug(50, "filelist->select->name: %s", filelist->select->name);
788                                                                filename = createpath(filelistpath->text, filelist->select->name);
789                                                                printf("start dvdplayer plugin\n");
790                                                                startplugin(filename,0);
791                                                        }
792                                                }
793                                                drawscreen(apskin, 0, 0);
794//                                              singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
795                                                singlepicstart(defaultmvi, 0);
796                                        }
797                                        else
798                                        {
799                                                debug(50, "mc_mounter_chk start");
800                                                mc_mounter_chk(filelistpath);
801                                                debug(50, "mc_mounter_chk done");
802
803                                                char* checkautoscan = NULL;
804                                                checkautoscan = readfiletomem("/tmp/.autoscan", 0);
805       
806                                                if(filelistpath->text != NULL && ostrcmp(checkautoscan, filelistpath->text) != 0)
807                                                        unlink("/tmp/.autoscan");
808       
809                                                free(checkautoscan), checkautoscan = NULL;
810                                        }
811                                }
812                                free(tmpfilename), tmpfilename = NULL;
813                        }
814                        else if(filelist->select != NULL && filelist->select->input == NULL)
815                        {
816                                if(filelistpath->text != NULL && ostrcmp(getconfig("mc_vp_path", NULL), filelistpath->text) != 0)
817                                        addconfig("mc_vp_path", filelistpath->text);
818
819                                debug(50, "filelist->select->text: %s", filelist->select->text);
820                                filename = createpath(filelistpath->text, filelist->select->name);
821
822                                if(cmpfilenameext(filename, ".ts") == 0)               
823                                        playertype = 1;
824                                else
825                                        playertype = 0;
826
827                                if(cmpfilenameext(filename, ".rar") == 0 || cmpfilenameext(filename, ".iso") == 0 || cmpfilenameext(filename, ".img") == 0)
828                                {
829                                        debug(50, "mc_mounter_main filename: %s", filename);
830                                        //addconfig("mc_vp_path", filelistpath->text);
831                                        currentdirectory = ostrcat("", getconfig("mc_vp_path", NULL), 0, 0);
832                                        selectedfile = ostrcat(selectedfile, getconfig("mc_vp_selectedfile", NULL), 0, 0);
833
834                                        mc_mounter_main(0,filename,filelistpath,filelist,apskin,filemask,tmpview,currentdirectory);
835                                        debug(50, "mc_mounter_main done");
836
837//                                      singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
838                                        singlepicstart(defaultmvi, 0);
839                                        continue;
840                                }
841                                else if(cmpfilenameext(filename, ".m3u") == 0 || cmpfilenameext(filename, ".pls") == 0)
842                                {
843                                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 1, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
844
845                                        if(getconfigint("mc_vp_autostart_playlist", NULL) == 0)
846                                                drawscreen(apskin, 0, 0);
847                                        continue;
848
849                                }
850
851                                changetext(b2, _("Filelist-Mode"));
852                       
853                                if(screensaver != NULL && screensaver->type == 0)
854                                        screensaver->value = (void*)filelist->select->text;
855
856                                setfbtransparent(0);
857
858                                debug(50, "playerstop");
859                                playrcstop(playertype, flag);
860
861                                delownerrc(apskin);
862
863                                debug(50, "playerstart: %s", filename);
864                                eof = 0;
865
866                                servicestop(status.aktservice, 1, 1);
867                                drawscreen(skin, 0, 0);
868                                drawscreen(loadmediadb, 0, 0);
869                                setfbtransparent(255);
870       
871                                debug(50, "playertype: %d", playertype);
872                                if(playertype == 1)
873                                        playerret = playerstartts(filename, 0);
874                                else
875                                        playerret = playerstart(filename);
876
877                                playwritevfd(filename, NULL);
878
879                                #ifndef SIMULATE
880                                        if(playerret != 0)
881                                        {
882                                                writevfdmenu("VideoPlayer Filelist-Mode");
883                                                status.play = 0;
884                                                status.playspeed = 0;
885                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
886                                                addscreenrc(apskin, filelist);
887//                                              drawscreen(apskin, 0, 0);
888                                                continue;
889                                        }
890                                        else
891                                        {
892                                                if(playertype == 0 && getconfigint("showlastpos", NULL) == 1)
893                                                {
894                                                        char* tmpfilename = ostrcat(filename, NULL, 0, 0);
895                                                        char* fileseek = ostrcat("/mnt/swapextensions/player/", basename(tmpfilename), 0, 0);
896                                                        fileseek = ostrcat(fileseek, ".se", 0, 0);
897       
898                                                        FILE* fbseek = fopen(fileseek, "r");
899                                                        if(fbseek != NULL)
900                                                        {
901                                                                if(textbox(_("Message"), _("Start at last position ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0) == 1)
902                                                                {
903                                                                        char* skip1 = calloc(1, 20); 
904                                                                        if(skip1 != NULL) 
905                                                                        {
906                                                                                fscanf(fbseek,"%s",skip1);
907                                                                                playrcjumpf(filename, NULL, atoll(skip1), &playinfobarstatus, &playinfobarcount, playertype, flag);             
908                                                                        }
909                                                                        free(skip1), skip1 = NULL;
910                                                                }
911                                                                fclose(fbseek);
912                                                        }
913                                                        free(fileseek), fileseek = NULL;
914                                                        free(tmpfilename), tmpfilename = NULL;
915                                                }
916                                        }
917               
918                                #endif
919
920                                clearscreen(loadmediadb);
921                                screenplayinfobar(filename, NULL, 0, playertype, 0);
922                                status.play = 1;
923
924                                free(status.playfile); status.playfile = NULL;
925                                status.playfile = ostrcat(filename, "", 0, 0);
926
927                                if(status.mediadbfiles == 0 && getconfigint("mc_vp_autoscan", NULL) == 1 && !file_exist("/tmp/.autoscan"))
928                                {
929                                        if(filelistpath->text != NULL)
930                                        {
931                                                mediadbscan(filelistpath->text, 1000, 1);
932                                                writesys("/tmp/.autoscan", filelistpath->text, 0);
933                                                status.mediadbfiles = findfiles(filelistpath->text, 0, 1, 1, 1); //count only
934                                        }
935                                        else
936                                        {
937                                                mediadbscan(currentdirectory, 1000, 1);
938                                                writesys("/tmp/.autoscan", currentdirectory, 0);
939                                                status.mediadbfiles = findfiles(currentdirectory, 0, 1, 1, 1); //count only
940                                        }
941                                }
942                        }
943                }
944
945                if(eof >=1 || (playertype == 0 && playerisplaying() == 0) || (playertype == 1 && playerisplayingts() == 0))
946                {
947                        if(status.play == 1)
948                        {
949                                char* tmpfilename = ostrcat(filename, NULL, 0, 0);
950                                char* fileseek = ostrcat("/mnt/swapextensions/player/", basename(tmpfilename), 0, 0);
951                                fileseek = ostrcat(fileseek, ".se", 0, 0);
952                                unlink(fileseek);
953                       
954                                setfbtransparent(0);
955                                apskin->hidden = NO;
956                                drawscreen(skin, 0, 0);
957                                playereof(apskin, filelist, listbox, filelistpath, b2, NULL, NULL, NULL, &skip, &eof, &playlist, playertype, flag);
958                        }
959                }
960        }
961
962        deinitscreensaver();
963        status.hangtime = getconfigint("hangtime", NULL);
964        delconfigtmp("dirsort");
965        delconfigtmp("mediadbpath");
966        delconfigtmp("mediadbfile");
967        delconfigtmp("mediadbscandelall");
968        delconfigtmp("mediadbscandelnotfound"); 
969        delconfigtmp("mediadbscantimeout");
970       
971        delmarkedscreennodes(apskin, FILELISTDELMARK);
972        delownerrc(apskin);
973        clearscreen(apskin);
974
975        free(filename), filename = NULL;
976        free(currentdirectory), currentdirectory = NULL;
977        free(selectedfile), selectedfile = NULL;
978        free(lastid), lastid = NULL;
979
980        free(status.playfile); status.playfile = NULL;
981        if(tmppolicy != NULL)
982        {
983                setpolicy(tmppolicy);
984                free(tmppolicy);
985        }
986
987        if(playertype == 1)
988                playerafterendts();
989        else
990                playerafterend();
991
992
993        if(status.mediadbthread == NULL)
994        {
995                if(status.writemediadb == 1)
996                        writemediadb(getconfig("mediadbfile", NULL), NULL);
997                freemediadb(0);
998        }
999
1000        clearscreen(blackscreen);
1001        clearscreen(loadmediadb);
1002
1003        system("umount -a -f -t fuse.rarfs,iso9660,fuse.djmount,fuse.fusesmb,fuse.curlftpfs");
1004
1005        free(defaultmvi), defaultmvi = NULL;
1006
1007        writevfdmenu("Mediacenter");
1008        debug(50, "closed");
1009}
1010
1011
1012
1013#endif
1014
Note: See TracBrowser for help on using the repository browser.