source: titan/plugins/mc/mc_pictureplayer.h @ 25589

Last change on this file since 25589 was 25589, checked in by obi, 9 years ago

atemio520 fix player stuff

File size: 14.7 KB
Line 
1#ifndef MC_PICTUREPLAYER_H
2#define MC_PICTUREPLAYER_H
3
4extern struct skin* skin;
5extern struct screensaver* screensaver;
6
7void screenmc_pictureplayer()
8{
9        char* filename = NULL;
10        char* currentdirectory = NULL;
11        char* selectedfile = NULL;
12
13        int nextpic = 0, rcret = 0, rcwait = 1000, playerret = 0, flag = 3, skip = 0, eof = 0, playinfobarcount = 0, playinfobarstatus = 1, tmpview = 0, playlist = 0, playertype = 0, stopradio = 0;
14
15        char* tmpstr = NULL;
16        tmpstr = ostrcat(getconfig("mc_pp_dirsort", NULL), NULL, 0, 0);
17        addconfigtmp("dirsort", tmpstr);
18        free(tmpstr), tmpstr = NULL;
19
20        // disable buffer
21        addconfigtmp("playerbuffersize", "0");
22                               
23        // workaround for grey background mvi
24        struct skin* blackscreen = getscreen("blackscreen");
25        drawscreen(blackscreen, 0, 0);
26
27        struct skin* loadmediadb = getscreen("loading");
28        drawscreen(loadmediadb, 0, 0);
29
30        // main screen
31        struct skin* apskin = getscreen("mc_pictureplayer");
32        struct skin* filelistpath = getscreennode(apskin, "filelistpath");
33        struct skin* filelist = getscreennode(apskin, "filelist");
34        struct skin* listbox = getscreennode(apskin, "listbox");
35        struct skin* b2 = getscreennode(apskin, "b2");
36        struct skin* b3 = getscreennode(apskin, "b3");
37        struct skin* b4 = getscreennode(apskin, "b4");
38
39        // pic screen
40        struct skin* picscreen = getscreen("picscreen");
41        struct skin* picture = getscreennode(picscreen, "picture");
42        struct skin* picname = getscreennode(picscreen, "picname");
43
44        if(getconfigint("mc_pp_uselastdir", NULL) == 1)
45        {
46                currentdirectory = ostrcat(currentdirectory, getconfig("mc_pp_path", NULL), 1, 0);
47                selectedfile = ostrcat(selectedfile, getconfig("mc_pp_selectedfile", NULL), 1, 0);
48        }
49        else
50        {
51                currentdirectory = ostrcat(currentdirectory, getconfig("mc_pp_defaultdir", NULL), 1, 0);               
52        }
53
54        // enable listbox and set hidden
55        listbox->aktpage = -1;
56        listbox->aktline = 0;
57        listbox->hidden = YES;
58
59        // read configs
60        int view = getconfigint("mc_pp_view", NULL);
61        char* sound = getconfig("mc_pp_sound", NULL);
62
63        // set allowed filemask
64        char* filemask = "*.jpg *.png";
65       
66        // disable global transparent/hangtime
67        setfbtransparent(255);
68        status.hangtime = 99999;
69        status.playspeed = 0, status.play = 0, status.pause = 0, status.random = 0;
70
71        debug(50, "start screenmc_pictureplayer view=%d", view);
72
73        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
74
75        if(getconfigint("screensaver", NULL) == 1)
76                initscreensaver();
77
78        tmpview = view;
79        mc_changeview(view, filelist, apskin, flag);
80        getfilelist(apskin, filelistpath, filelist, currentdirectory, filemask, tmpview, selectedfile);
81        addscreenrc(apskin, filelist);
82
83        // start radio musik on pictureplayer
84        char* track = NULL;
85        track = ostrcat(track, sound, 1, 0);
86
87        if(stopradio == 0 && getconfig("mc_pp_sound", NULL) != NULL && ostrcmp(sound, "off") != 0)
88        {
89                playerret = playerstart(track);
90                playwritevfd(track, NULL);
91
92                #ifndef SIMULATE
93                        if(playerret != 0)
94                        {
95                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
96                                playerstop();
97                                playerret = 0;
98                                stopradio = 1;
99                        }
100                #endif
101        }
102       
103        while(1)
104        {
105                rcret = waitrcext(apskin, rcwait, 0, tmpview);
106                debug(50, "while status play=%d", status.play);
107                nextpic = 0;
108                if(playinfobarcount < getconfigint("mc_pp_interval", NULL) && status.play == 1)
109                        playinfobarcount ++;
110                else if(status.play == 1)
111                {
112//                      picplayer(picscreen, picture, picname, NULL, 0);       
113                        nextpic = 1;
114                }
115
116                if (rcret == getrcconfigint("rcrecord", NULL))
117                {
118                        system("grab -j 100");
119                        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);
120                }
121                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))
122                {
123                        if((status.play == 1) || (status.pause == 1))
124                                playrcpause(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
125                }
126                else if(rcret == getrcconfigint("rcplay", NULL))
127                {
128                        if((status.play == 1) || (status.pause == 1))
129                                playrcplay(filename, NULL, &playinfobarstatus, &playinfobarcount, playertype, flag);
130                }
131                else if((rcret == getrcconfigint("rcchdown", NULL)) || (rcret == getrcconfigint("rcprev", NULL)))
132                {
133                        if(status.play == 1)
134                                eof = 1;
135                }
136                else if((rcret == getrcconfigint("rcchup", NULL)) || (rcret == getrcconfigint("rcnext", NULL)))
137                {
138                        if(status.play == 1)
139                                eof = 2;
140                }
141                else if(rcret == getrcconfigint("rcblue", NULL))
142                {
143                        if(status.repeat == 0)
144                        {
145                                changetext(b4, _("Repeat-On"));
146                                drawscreen(apskin, 0, 0);
147                                status.repeat = 1;
148                        }
149                        else
150                        {
151                                status.repeat = 0;
152                                changetext(b4, _("Repeat"));
153                                drawscreen(apskin, 0, 0);
154                        }
155                }
156                else if(rcret == getrcconfigint("rcyellow", NULL))
157                {
158                        playerrandom(apskin, filelist, listbox, b3, playlist, flag);
159                }
160                else if(rcret == getrcconfigint("rcred", NULL))
161                {
162                        if(status.play == 1)
163                                playrcred(filename, NULL, playinfobarstatus, playertype, flag);
164                        else
165                        {
166                                if(playlist == 0)
167                                {
168                                        int sort = screendirsort();
169                                        debug(50, "rcred: tmpsort=%d", sort);
170                                        addconfiginttmp("dirsort", sort);
171
172                                        mc_changeview(view, filelist, apskin, flag);
173                                        delownerrc(apskin);
174                                        getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->name);
175                                        addscreenrc(apskin, filelist);
176                                        drawscreen(apskin, 0, 0);
177                                }
178                        }
179                }
180                else if(rcret == getrcconfigint("rcgreen", NULL))
181                {
182                        if(status.play == 1)
183                                playrcgreen(filename, NULL, playinfobarstatus, playertype, flag);
184                        else
185                        {
186                                showplaylist(apskin, filelistpath, filelist, listbox, b2, 0, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
187                                drawscreen(apskin, 0, 0);
188                        }
189
190                }
191                else if(rcret == getrcconfigint("rctext", NULL))
192                {               
193                        if(status.play == 1)
194                                playrctext(filename, NULL, playinfobarstatus, playertype, flag);       
195                }
196                else if(rcret == getrcconfigint("rcmenu", NULL))
197                {
198                        if(status.play == 0 && status.pause == 0)
199                        {
200                                debug(50, "rcmenu: settings");
201
202                                view = getconfigint("mc_pp_view", NULL);
203                                screenmc_pictureplayer_settings();
204                                drawscreen(blackscreen, 0, 0);
205                                drawscreen(loadmediadb, 0, 0); 
206
207                                if(view != getconfigint("mc_pp_view", NULL))
208                                {
209                                        printf("view changed > change tmpview\n");
210                                        tmpview = getconfigint("mc_pp_view", NULL);
211                                }
212
213                                if(getconfig("mc_pp_dirsort", NULL) != getconfig("dirsort", NULL))
214                                {
215                                        char* tmpstr = NULL;
216                                        tmpstr = ostrcat(getconfig("mc_pp_dirsort", NULL), NULL, 0, 0);
217                                        addconfigtmp("dirsort", tmpstr);
218                                        free(tmpstr), tmpstr = NULL;
219                                }
220
221                                sound = getconfig("mc_pp_sound", NULL);
222                                stopradio = 0;
223
224                                // start radio musik on pictureplayer
225                                playerstop();
226                                free(track), track = NULL;
227                                track = ostrcat("", sound, 0, 0);
228
229                                if(stopradio == 0 && getconfig("mc_pp_sound", NULL) != NULL && ostrcmp(sound, "off") != 0)
230                                {
231                                        playerret = playerstart(track);
232                                        playwritevfd(filename, NULL);
233
234                                        #ifndef SIMULATE
235                                                if(playerret != 0)
236                                                {
237                                                        textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
238                                                        stopradio = 1;
239                                                }
240                                        #endif
241                                }
242                                else
243                                        playerstop();
244
245                                mc_changeview(tmpview, filelist, apskin, flag);
246                                drawscreen(blackscreen, 0, 0);
247                                drawscreen(loadmediadb, 0, 0); 
248
249                                delownerrc(apskin);     
250                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->name);
251                                addscreenrc(apskin, filelist);
252
253                                drawscreen(apskin, 0, 0);
254                        }
255                }
256                else if(rcret == getrcconfigint("rcstop", NULL) || (rcret == getrcconfigint("rcexit", NULL) && status.play == 1))
257                {
258                        debug(50, "rcstop: stopplayback");
259
260                        picplayer(picscreen, picture, picname, NULL, 0);
261                        clearscreen(picscreen);
262                        eof = 0;
263
264                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
265       
266                        apskin->hidden = NO;
267                        filelist->hidden = NO;
268                        listbox->hidden = YES;
269                        changetext(filelistpath, _(getconfig("mc_pp_path", NULL)));
270                        changetext(b2, _("Filelist-Mode"));
271
272                        // switch filelist
273                        delownerrc(apskin);
274                        addscreenrc(apskin, filelist);
275                        setfbtransparent(255);
276                        drawscreen(apskin, 0, 0);
277
278                        sleep(1);
279
280                        playinfobarcount = 0;
281                        playinfobarstatus = 1;
282                        status.playspeed = 0;
283                        status.pause = 0;
284                        status.play = 0;
285                        playlist = 0;
286                        playinfobarcount = 0;
287                        writevfdmenu("pictureplayer Filelist-Mode");
288                }
289                else if(rcret == getrcconfigint("rcexit", NULL))
290                {
291                        debug(50, "exit - save mc_pp_path: %s", filelistpath->text);
292                        debug(50, "exit - save mc_pp_selectedfile: %s", filelistpath->text);
293                        drawscreen(blackscreen, 0, 0);
294                        drawscreen(loadmediadb, 0, 0);
295
296                        if(playlist == 0)
297                        {
298                                if(filelistpath->text != NULL && ostrcmp(getconfig("mc_pp_path", NULL), filelistpath->text) != 0)
299                                        addconfig("mc_pp_path", filelistpath->text);
300                                if(filelist->select != NULL && filelist->select->name != NULL && ostrcmp(getconfig("mc_pp_selectedfile", NULL), filelist->select->name) != 0)
301                                        addconfig("mc_pp_selectedfile", filelist->select->name);
302                        }
303
304                        playerstop();
305                        picplayer(picscreen, picture, picname, NULL, 0);
306                        drawscreen(blackscreen, 0, 0);
307                        drawscreen(loadmediadb, 0, 0);
308                        eof = 0;
309
310                        setfbtransparent(255);
311                        sleep(1);
312                        apskin->hidden = NO;
313                        filelist->hidden = NO;
314                        listbox->hidden = YES;
315                        changetext(b2, _("Filelist-Mode"));
316                        changetext(b3, _("Random"));
317                        changetext(b4, _("Repeat"));                                                                           
318                        status.playspeed = 0;
319                        status.pause = 0;
320                        status.play = 0;
321                        status.random = 0;
322                        status.repeat = 0;
323                        playlist = 0;
324                        writevfdmenu("Mediacenter");
325                        playinfobarcount = 0;
326
327                        printf("exit: view=%d tmpview=%d\n", view, tmpview);                   
328                        break;
329                }
330                else if(rcret == getrcconfigint("rcok", NULL))
331                {
332                        if(playlist == 1 && listbox->select != NULL)
333                        {
334                                filename = ostrcat("", listbox->select->name, 0, 0);
335
336                                changetext(b2, _("Playlist-Mode"));
337                       
338                                debug(50, "screensaver title: %s", listbox->select->text);
339                                if(screensaver != NULL && screensaver->type == 0)
340                                        screensaver->value = listbox->select->text;
341
342                                debug(50, "playerstop");
343                                playerstop();
344
345                                debug(50, "playerstart: %s", filename);
346                                eof = 0;
347
348                                delownerrc(apskin);
349                                setfbtransparent(255);
350
351                                if(stopradio == 0 && getconfig("mc_pp_sound", NULL) != NULL && ostrcmp(sound, "off") != 0)
352                                {
353                                        playerret = playerstart(filename);
354                                        playwritevfd(filename, NULL);
355
356                                        #ifndef SIMULATE
357                                                if(playerret != 0)
358                                                {
359                                                        writevfdmenu("pictureplayer Filelist-Mode");
360                                                        status.play = 0;
361                                                        playlist = 0;
362                                                        status.playspeed = 0;
363                                                        textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
364
365                                                        changetext(filelistpath, _(getconfig("mc_pp_path", NULL)));
366                                                        filelist->hidden = NO;
367                                                        listbox->hidden = YES;
368       
369                                                        addscreenrc(apskin, filelist);
370                                                        drawscreen(apskin, 0, 0);
371                                                        stopradio = 1;
372                                                        continue;
373                                                }
374                                        #endif
375                                }
376
377                                screenplayinfobar(filename, NULL, 0, playertype, 0);                   
378                                status.play = 1;
379                        }
380                        else if(filelist->select != NULL && filelist->select->input != NULL)
381                        {
382                                // workaround dont open folder on rcchup
383                                if(skip == 1)
384                                {
385                                        drawscreen(apskin, 0, 0);
386                                        writerc(getrcconfigint("rcok", NULL));
387                                        skip = 0;
388                                }
389                                else
390                                {
391                                        debug(50, "mc_mounter_chk start");
392                                        mc_mounter_chk(filelistpath);
393                                        debug(50, "mc_mounter_chk done");
394                                }
395                        }
396                        else if(filelist->select != NULL && filelist->select->input == NULL)
397                        {
398                                if(filelistpath->text != NULL && ostrcmp(getconfig("mc_pp_path", NULL), filelistpath->text) != 0)
399                                        addconfig("mc_pp_path", filelistpath->text);
400
401                                debug(50, "filelist->select->text: %s", filelist->select->text);
402                                filename = createpath(filelistpath->text, filelist->select->name);
403                                printf("name: %s\n",filelist->select->name);
404                                printf("text: %s\n",filelist->select->text);
405
406                                if(cmpfilenameext(filename, ".rar") == 0 || cmpfilenameext(filename, ".iso") == 0 || cmpfilenameext(filename, ".img") == 0)
407                                {
408                                        debug(50, "mc_mounter_main filename: %s", filename);
409                                        //addconfig("mc_pp_path", filelistpath->text);
410                                        currentdirectory = ostrcat("", getconfig("mc_pp_path", NULL), 0, 0);
411                                        selectedfile = ostrcat(selectedfile, getconfig("mc_pp_selectedfile", NULL), 0, 0);
412
413                                        mc_mounter_main(0,filename,filelistpath,filelist,apskin,filemask,tmpview,currentdirectory);
414                                        debug(50, "mc_mounter_main done");
415       
416                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
417                                        continue;
418                                }
419                                else if(cmpfilenameext(filename, ".m3u") == 0 || cmpfilenameext(filename, ".pls") == 0)
420                                {
421                                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 1, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
422                                        continue;
423                                }
424
425                                changetext(b2, _("Filelist-Mode"));
426                       
427                                if(screensaver != NULL && screensaver->type == 0)
428                                        screensaver->value = (void*)filelist->select->text;
429
430                                delownerrc(apskin);
431//                              setfbtransparent(255);
432
433                                debug(50, "playerstart: %s", filename);
434                                eof = 0;
435
436                                playinfobarcount = 0, playinfobarstatus = 1;
437                                picplayer(picscreen, picture, picname, filename, 1);
438                                servicestop(status.aktservice, 1, 1);
439
440                                status.play = 1;
441                        }
442                }
443               
444                if(playerisplaying() == 0)
445                {
446                        playerstop();
447
448                        if(stopradio == 0 && getconfig("mc_pp_sound", NULL) != NULL && ostrcmp(sound, "off") != 0)
449                        {
450                                playerret = playerstart(track);
451                                playwritevfd(filename, NULL);
452
453                                #ifndef SIMULATE
454                                        if(playerret != 0)
455                                        {
456                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
457                                                stopradio = 1;
458                                        }
459                                #endif
460                        }
461                }
462
463                if((eof >= 1) || (nextpic == 1))
464                {
465                        if(status.play == 1)
466                        {
467//                              setfbtransparent(0);
468//                              apskin->hidden = NO;
469//                              drawscreen(skin, 0, 0);
470                                playereof(apskin, filelist, listbox, filelistpath, picscreen, picture, picname, b2, &skip, &eof, &playlist, playertype, flag);
471                        }
472                }
473        }
474
475        // remove disable buffer
476        delconfigtmp("playerbuffersize");
477
478        deinitscreensaver();
479        status.hangtime = getconfigint("hangtime", NULL);
480        delconfigtmp("dirsort");
481
482        delmarkedscreennodes(apskin, FILELISTDELMARK);
483        delownerrc(apskin);
484        clearscreen(apskin);
485        clearscreen(picscreen);
486
487        free(track), track = NULL;
488        free(filename), filename = NULL;
489        free(currentdirectory), currentdirectory = NULL;
490        free(selectedfile), selectedfile = NULL;
491
492        clearscreen(blackscreen);
493        clearscreen(loadmediadb);
494       
495        writevfdmenu("Mediacenter");
496        debug(50, "closed");
497}
498
499#endif
Note: See TracBrowser for help on using the repository browser.