source: titan/plugins/mc/mc_audioplayer.h @ 14161

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

[titan] mc vp add internal tsplayer support and smal security update for miniplayer

File size: 13.9 KB
Line 
1#ifndef MC_AUDIOPLAYER_H
2#define MC_AUDIOPLAYER_H
3
4extern struct skin* skin;
5extern struct screensaver* screensaver;
6
7void screenmc_audioplayer()
8{
9        char* filename = NULL;
10        char* currentdirectory = NULL;
11        int rcret = 0, rcwait = 1000, playerret = 0, flag = 2, skip = 0, eof = 0, playinfobarcount = 0, playinfobarstatus = 1, count = 0, tmpview = 1, playlist = 0, playertype = 0;
12
13        // workaround for grey background mvi
14        struct skin* blackscreen = getscreen("blackscreen");
15        drawscreen(blackscreen, 0);
16
17        // main screen
18        struct skin* apskin = getscreen("mc_audioplayer");
19        struct skin* filelistpath = getscreennode(apskin, "mc_filelistpath");
20        struct skin* filelist = getscreennode(apskin, "mc_filelist");
21        struct skin* listbox = getscreennode(apskin, "listbox");
22        struct skin* b2 = getscreennode(apskin, "b2");
23        struct skin* b3 = getscreennode(apskin, "b3");
24        struct skin* b4 = getscreennode(apskin, "b4");
25
26        // infobar screen
27        struct skin* infobar = getscreen("mc_audioplayer_infobar");
28        struct skin* spos = getscreennode(infobar, "pos");
29        struct skin* slen = getscreennode(infobar, "len");
30        struct skin* sreverse = getscreennode(infobar, "reverse");
31        struct skin* sprogress = getscreennode(infobar, "progress");
32
33        currentdirectory = ostrcat("", getconfig("mc_audioplayerpath", NULL), 0, 0);
34
35        // enable listbox and set hidden
36        listbox->aktpage = -1;
37        listbox->aktline = 0;
38        listbox->hidden = YES;
39
40        // read configs
41        int style = getconfigint("style", NULL);
42        int view = getconfigint("view", NULL);
43        int screensaver_delay = getconfigint("screensaver_delay", NULL);
44
45        // set allowed filemask
46        char* filemask = NULL;
47        if((status.expertmodus > 0) || (file_exist("/var/swap/etc/.mcfull")))
48                filemask = ostrcat("*.m3u *.pls *.mp3 *.flac *.ogg *.wma *.ra", NULL, 0, 0);
49        else
50                filemask = ostrcat("*.m3u *.pls *.mp3 *.flac *.ogg", NULL, 0, 0);
51       
52        // disable global transparent/hangtime
53        setfbtransparent(255);
54        status.hangtime = 99999;
55        status.playspeed = 0, status.play = 0, status.pause = 0, status.random = 0;
56
57        debug(50, "start screenmc_audioplayer style=%d, view=%d", style, view);
58
59        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
60
61        if(getconfigint("screensaver", NULL) == 1)
62                initscreensaver();
63
64        mc_changeview(view, filelist);
65
66        getfilelist(apskin, filelistpath, filelist, currentdirectory, filemask, tmpview, NULL);
67        addscreenrc(apskin, filelist);
68
69        while(1)
70        {
71                if(status.play == 1 && count <= screensaver_delay)
72                        mc_audioplayer_infobar(apskin, infobar, spos, slen, sreverse, sprogress, NULL);
73
74                rcret = waitrc(apskin, rcwait, 0);
75                debug(50, "while status play=%d", status.play);
76
77                if(rcret != RCTIMEOUT && rcret != getrcconfigint("rcvolup", NULL) && rcret != getrcconfigint("rcvoldown", NULL) && rcret != getrcconfigint("rcmute", NULL))
78                {
79                        if(count > screensaver_delay && screensaver != NULL)
80                        {
81//                              if((rcret == getrcconfigint("rcfr", NULL)) || (rcret == getrcconfigint("rcff", NULL)) || (rcret == getrcconfigint("rcpause", NULL)) || (rcret == getrcconfigint("rc1", NULL)) || (rcret == getrcconfigint("rc3", NULL)) || (rcret == getrcconfigint("rc4", NULL)) || (rcret == getrcconfigint("rc6", NULL)) || (rcret == getrcconfigint("rc7", NULL)) || (rcret == getrcconfigint("rc9", NULL)))
82                                if((rcret == getrcconfigint("rcpause", NULL)) || (rcret == getrcconfigint("rc1", NULL)) || (rcret == getrcconfigint("rc3", NULL)) || (rcret == getrcconfigint("rc4", NULL)) || (rcret == getrcconfigint("rc6", NULL)) || (rcret == getrcconfigint("rc7", NULL)) || (rcret == getrcconfigint("rc9", NULL)))
83                                        drawscreen(infobar, 0);
84                                else
85                                {
86                                        if(screensaver != NULL && screensaver->type == 3)
87                                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
88                                        drawscreen(apskin, 0);
89                                }
90
91
92                        }
93                        count = 0;
94                        rcwait = 1000;
95                }
96                else if(status.play == 1 && screensaver != NULL)
97                        count++;
98
99                if(status.play == 1 && count > screensaver_delay && screensaver != NULL)
100                {
101                        showscreensaver();
102                        rcwait = screensaver->speed;
103                }
104
105                if(rcret == getrcconfigint("rc1", NULL))
106                {
107                        if((status.play == 1) || (status.playspeed != 0))
108                                playrcjumpr(filename, 10, &playinfobarstatus, &playinfobarcount, playertype, flag);
109                }
110                else if(rcret == getrcconfigint("rc4", NULL))
111                {
112                        if((status.play == 1) || (status.playspeed != 0))
113                                playrcjumpr(filename, 30, &playinfobarstatus, &playinfobarcount, playertype, flag);
114                }
115                else if(rcret == getrcconfigint("rc7", NULL))
116                {
117                        if((status.play == 1) || (status.playspeed != 0))
118                                playrcjumpr(filename, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
119                }
120                else if(rcret == getrcconfigint("rc3", NULL))
121                {
122                        if((status.play == 1) || (status.playspeed != 0))
123                                playrcjumpf(filename, 10, &playinfobarstatus, &playinfobarcount, playertype, flag);
124                }
125                else if(rcret == getrcconfigint("rc6", NULL))
126                {
127                        if((status.play == 1) || (status.playspeed != 0))
128                                playrcjumpf(filename, 30, &playinfobarstatus, &playinfobarcount, playertype, flag);
129                }
130                else if(rcret == getrcconfigint("rc9", NULL))
131                {
132                        if((status.play == 1) || (status.playspeed != 0))
133                                playrcjumpf(filename, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
134                }
135                else if(rcret == getrcconfigint("rcff", NULL))
136                {
137                        if((status.play == 1) || (status.playspeed != 0))
138                                playrcff(filename, &playinfobarstatus, &playinfobarcount, playertype, 2);
139                }       
140                else if(rcret == getrcconfigint("rcfr", NULL))
141                {
142                        if((status.play == 1) || (status.playspeed != 0))
143                                playrcfr(filename, &playinfobarstatus, &playinfobarcount, playertype, 2);
144                }
145                else if(rcret == getrcconfigint("rcplay", NULL))
146                {
147                        if((status.play == 1) || (status.playspeed != 0))
148                                playrcplay(filename, &playinfobarstatus, &playinfobarcount, playertype, flag);
149                        //showplaylist(1);
150                }
151                else if(rcret == getrcconfigint("rcpause", NULL))
152                {
153                        if(status.pause == 1)
154                        {
155                                if(screensaver != NULL && screensaver->type == 3)
156                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
157                                drawscreen(apskin, 0);
158                        }
159                        if((status.play == 1) || (status.pause == 1))
160                                playrcpause(filename, &playinfobarstatus, &playinfobarcount, playertype, flag);
161                }
162                else if((rcret == getrcconfigint("rcchdown", NULL)) || (rcret == getrcconfigint("rcnext", NULL)))
163                {
164                        if(status.play == 1)
165                                eof = 1;
166                }
167                else if((rcret == getrcconfigint("rcchup", NULL)) || (rcret == getrcconfigint("rcprev", NULL)))
168                {
169                        if(status.play == 1)
170                                eof = 2;
171                }
172                else if(rcret == getrcconfigint("rcblue", NULL))
173                {
174                        debug(50, "rcblue: repeat");
175
176                        if(status.repeat == 0)
177                        {
178                                changetext(b4, _("Repeat-On"));
179                                drawscreen(apskin, 0);
180                                status.repeat = 1;
181                        }
182                        else
183                        {
184                                status.repeat = 0;
185                                changetext(b4, _("Repeat"));
186                                drawscreen(apskin, 0);
187                        }
188                }
189                else if(rcret == getrcconfigint("rcyellow", NULL))
190                {
191                        playerrandom(apskin, filelist, listbox, b3, playlist, flag);
192                }
193                else if(rcret == getrcconfigint("rcred", NULL))
194                {
195                        if(playlist == 0)
196                        {
197                                int sort = screenmc_sort();
198                                debug(50, "rcred: tmpsort=%d", sort);
199
200                                addconfiginttmp("dirsort", sort);
201                                mc_changeview(view, filelist);
202                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->text);
203                        }
204                }
205                else if(rcret == getrcconfigint("rcgreen", NULL))
206                {
207                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 0, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
208                        drawscreen(apskin, 0);
209                }
210                else if(rcret == getrcconfigint("rcmenu", NULL))
211                {
212                        if(status.play == 0 && status.pause == 0)
213                        {
214                                debug(50, "rcmenu: settings");
215
216                                screenmc_audioplayer_settings();
217                                view = getconfigint("view", NULL);
218                                mc_changeview(view, filelist);
219                                screensaver_delay = getconfigint("screensaver_delay", NULL);
220                                deinitscreensaver();
221                                if(getconfigint("screensaver", NULL) == 1)
222                                        initscreensaver();
223
224                                drawscreen(apskin, 0);
225                        }
226                }
227                else if(rcret == getrcconfigint("rcinfo", NULL))
228                {
229                        printf("Title: %s\n", playergetinfo("Title"));
230                        printf("Artist: %s\n", playergetinfo("Artist"));
231                        printf("Album: %s\n", playergetinfo("Album"));
232                        printf("Year: %s\n", playergetinfo("Year"));
233                        printf("Genre: %s\n", playergetinfo("Genre"));
234                        printf("Comment: %s\n", playergetinfo("Comment"));
235                        printf("Track: %s\n", playergetinfo("Track"));
236                        printf("Copyright: %s\n", playergetinfo("Copyright"));
237                        printf("TestLibEplayer: %s\n", playergetinfo("TestLibEplayer"));
238                }
239                else if(rcret == getrcconfigint("rcstop", NULL))
240                {
241
242//                      if((status.play == 1) || (status.pause == 1))
243//                      {
244                                debug(50, "rcstop: stopplayback");
245                                playerstop();
246
247                                filelist->hidden = NO;
248                                listbox->hidden = YES;
249                                changetext(filelistpath, _(getconfig("mc_audioplayerpath", NULL)));
250                                changetext(b2, _("Filelist-Mode"));
251
252                                // switch filelist
253                                delownerrc(apskin);
254                                addscreenrc(apskin, filelist);
255
256                                drawscreen(apskin, 0);
257
258                                sleep(1);
259                                status.playspeed = 0;
260                                status.pause = 0;
261                                status.play = 0;
262                                playlist = 0;
263
264                                writevfd("AudioPlayer Filelist-Mode");
265//                      }
266                }
267                else if(rcret == getrcconfigint("rcexit", NULL))
268                {
269                        debug(50, "exit - save mc_audioplayerpath: %s", filelistpath->text);
270                        if(playlist == 0)
271                        {
272                                if(ostrcmp(getconfig("mc_audioplayerpath", NULL), filelistpath->text) != 0)
273                                        addconfig("mc_audioplayerpath", filelistpath->text);
274                        }
275
276                        playerstop();
277
278                        sleep(1);
279                        filelist->hidden = NO;
280                        listbox->hidden = YES;
281                        changetext(b2, _("Filelist-Mode"));
282                        changetext(b3, _("Random"));
283                        changetext(b4, _("Repeat"));                                                                           
284                        status.playspeed = 0;
285                        status.pause = 0;
286                        status.play = 0;
287                        status.random = 0;
288                        status.repeat = 0;
289                        playlist = 0;
290                        writevfd("Mediacenter");
291                        break;
292                }
293                else if(rcret == getrcconfigint("rcok", NULL))
294                {
295                        if(playlist == 1 && listbox->select != NULL)
296                        {
297                                debug(50, "listbox->select->name: %s", listbox->select->name);
298                                filename = ostrcat("", listbox->select->name, 0, 0);
299
300                                changetext(b2, _("Playlist-Mode"));
301                       
302                                debug(50, "screensaver title: %s", listbox->select->text);
303                                if(screensaver != NULL && screensaver->type == 0)
304                                        screensaver->value = listbox->select->text;
305
306                                debug(50, "playerstop");
307                                playerstop();
308                                sleep(1);
309                                drawscreen(infobar, 0);
310                                debug(50, "playerstart: %s", filename);
311                                eof = 0;
312
313                                playerret = playerstart(filename);
314                                playwritevfd(filename);
315
316                                #ifndef SIMULATE
317                                        if(playerret != 0)
318                                        {
319                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
320/*
321                                                writevfd("AudioPlayer Filelist-Mode");
322                                                status.play = 0;
323                                                playlist = 0;
324                                                status.playspeed = 0;
325
326                                                changetext(filelistpath, _(getconfig("mc_audioplayerpath", NULL)));
327                                                filelist->hidden = NO;
328                                                listbox->hidden = YES;
329
330                                                delownerrc(apskin);
331                                                addscreenrc(apskin, filelist);
332                                                drawscreen(apskin, 0);
333*/
334// test
335                                                status.play = 1;
336                                                eof = 1;
337// test
338                                                continue;
339                                        }
340                                #endif
341                       
342                                status.play = 1;
343                        }
344                        else if(filelist->select != NULL && filelist->select->input != NULL)
345                        {
346                                // workaround dont open folder on rcchup
347                                if(skip == 1)
348                                {
349                                        drawscreen(apskin, 0);
350                                        writerc(getrcconfigint("rcok", NULL));
351                                        skip = 0;
352                                }
353                                else
354                                {
355                                        debug(50, "mc_mounter_chk start");
356                                        mc_mounter_chk(filelistpath);
357                                        debug(50, "mc_mounter_chk done");
358                                }                               
359                        }
360                        else if(filelist->select != NULL && filelist->select->input == NULL)
361                        {
362                                if(ostrcmp(getconfig("mc_audioplayerpath", NULL), filelistpath->text) != 0)
363                                        addconfig("mc_audioplayerpath", filelistpath->text);
364
365                                debug(50, "filelist->select->text: %s", filelist->select->text);
366                                filename = createpath(filelistpath->text, filelist->select->text);
367
368                                if(!strncmp(".rar",filename+strlen(filename)-4,4) || !strncmp(".iso",filename+strlen(filename)-4,4) || !strncmp(".img",filename+strlen(filename)-4,4))
369                                {
370                                        debug(50, "mc_mounter_main filename: %s", filename);
371                                        //addconfig("mc_audioplayerpath", filelistpath->text);
372                                        currentdirectory = ostrcat("", getconfig("mc_audioplayerpath", NULL), 0, 0);
373
374                                        mc_mounter_main(0,filename,filelistpath,filelist,apskin,filemask,tmpview,currentdirectory);
375                                        debug(50, "mc_mounter_main done");
376       
377                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
378                                        continue;
379                                }
380                                else if(!strncmp(".m3u",filename+strlen(filename)-4,4) || !strncmp(".pls",filename+strlen(filename)-4,4)) 
381                                {
382                                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 1, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
383                                        drawscreen(apskin, 0);
384                                        continue;
385                                }
386
387                                changetext(b2, _("Filelist-Mode"));
388                       
389                                if(screensaver != NULL && screensaver->type == 0)
390                                        screensaver->value = (void*)filelist->select->text;
391
392                                debug(50, "playerstop");
393                                playerstop();
394                                sleep(1);
395
396                                drawscreen(infobar, 0);
397                                debug(50, "playerstart: %s", filename);
398                                eof = 0;
399                                playerret = playerstart(filename);
400                                playwritevfd(filename);
401
402                                #ifndef SIMULATE
403                                        if(playerret != 0)
404                                        {
405                                                writevfd("AudioPlayer Filelist-Mode");
406                                                status.play = 0;
407                                                status.playspeed = 0;
408                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
409                                                continue;
410                                        }
411                                #endif
412
413                                status.play = 1;
414
415                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
416                        }
417                }
418                if(eof >=1 || playerisplaying() == 0)
419                {
420                        if(status.play == 1)
421                                playereof(apskin, filelist, listbox, filelistpath, b2, NULL, NULL, NULL, &skip, &eof, &playlist, playertype, flag);
422                }
423        }
424
425        deinitscreensaver();
426               
427        status.hangtime = getconfigint("hangtime", NULL);
428        delconfigtmp("dirsort");
429
430        delmarkedscreennodes(apskin, FILELISTDELMARK);
431        delownerrc(apskin);
432        clearscreen(apskin);
433        if(style == 1)
434        {
435                delmarkedpic(1010);
436                delmarkedpic(1011);
437                delmarkedpic(1012);
438                delmarkedpic(1013);
439        }
440
441        free(filename), filename = NULL;
442        free(currentdirectory), currentdirectory = NULL;
443
444        writevfd("Mediacenter");
445        debug(50, "closed");
446}
447
448#endif
449
Note: See TracBrowser for help on using the repository browser.