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

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

fix mc

File size: 14.2 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 = 0, 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, "filelistpath");
20        struct skin* filelist = getscreennode(apskin, "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_ap_path", 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 view = getconfigint("mc_ap_view", NULL);
42        int screensaver_delay = getconfigint("screensaver_delay", NULL);
43
44        // set allowed filemask
45        char* filemask = NULL;
46        if((status.expertmodus > 0) || (file_exist("/var/swap/etc/.mcfull")))
47                filemask = ostrcat("*.m3u *.pls *.mp3 *.flac *.ogg *.wma *.ra", NULL, 0, 0);
48        else
49                filemask = ostrcat("*.m3u *.pls *.mp3 *.flac *.ogg", NULL, 0, 0);
50       
51        // disable global transparent/hangtime
52        setfbtransparent(255);
53        status.hangtime = 99999;
54        status.playspeed = 0, status.play = 0, status.pause = 0, status.random = 0;
55
56        debug(50, "start screenmc_audioplayer view=%d", view);
57
58        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
59
60        if(getconfigint("screensaver", NULL) == 1)
61                initscreensaver();
62
63        tmpview = view;
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(tmpview, filelist);
202
203                                delownerrc(apskin);     
204                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->text);
205                                addscreenrc(apskin, filelist);
206                                drawscreen(apskin, 0);                 
207                        }
208                }
209                else if(rcret == getrcconfigint("rcgreen", NULL))
210                {
211                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 0, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
212                        drawscreen(apskin, 0);
213                }
214                else if(rcret == getrcconfigint("rcmenu", NULL))
215                {
216                        if(status.play == 0 && status.pause == 0)
217                        {
218                                debug(50, "rcmenu: settings");
219
220                                view = getconfigint("mc_ap_view", NULL);
221                                screenmc_audioplayer_settings();
222                               
223                                if(view != getconfigint("mc_ap_view", NULL))
224                                {
225                                        printf("view changed > change tmpview\n");
226                                        tmpview = getconfigint("mc_ap_view", NULL);
227                                }
228                               
229                                mc_changeview(tmpview, filelist);
230
231                                delownerrc(apskin);     
232                                getfilelist(apskin, filelistpath, filelist, filelistpath->text, filemask, tmpview, filelist->select->text);
233                                addscreenrc(apskin, filelist);
234
235                                screensaver_delay = getconfigint("screensaver_delay", NULL);
236                                deinitscreensaver();
237                                if(getconfigint("screensaver", NULL) == 1)
238                                        initscreensaver();
239
240                                drawscreen(apskin, 0);
241                        }
242                }
243                else if(rcret == getrcconfigint("rcinfo", NULL))
244                {
245                        printf("Title: %s\n", playergetinfo("Title"));
246                        printf("Artist: %s\n", playergetinfo("Artist"));
247                        printf("Album: %s\n", playergetinfo("Album"));
248                        printf("Year: %s\n", playergetinfo("Year"));
249                        printf("Genre: %s\n", playergetinfo("Genre"));
250                        printf("Comment: %s\n", playergetinfo("Comment"));
251                        printf("Track: %s\n", playergetinfo("Track"));
252                        printf("Copyright: %s\n", playergetinfo("Copyright"));
253                        printf("TestLibEplayer: %s\n", playergetinfo("TestLibEplayer"));
254                }
255                else if(rcret == getrcconfigint("rcstop", NULL))
256                {
257
258//                      if((status.play == 1) || (status.pause == 1))
259//                      {
260                                debug(50, "rcstop: stopplayback");
261                                playerstop();
262
263                                filelist->hidden = NO;
264                                listbox->hidden = YES;
265                                changetext(filelistpath, _(getconfig("mc_ap_path", NULL)));
266                                changetext(b2, _("Filelist-Mode"));
267
268                                // switch filelist
269                                delownerrc(apskin);
270                                addscreenrc(apskin, filelist);
271
272                                drawscreen(apskin, 0);
273
274                                sleep(1);
275                                status.playspeed = 0;
276                                status.pause = 0;
277                                status.play = 0;
278                                playlist = 0;
279
280                                writevfd("AudioPlayer Filelist-Mode");
281//                      }
282                }
283                else if(rcret == getrcconfigint("rcexit", NULL))
284                {
285                        debug(50, "exit - save mc_ap_path: %s", filelistpath->text);
286                        if(playlist == 0)
287                        {
288                                if(ostrcmp(getconfig("mc_ap_path", NULL), filelistpath->text) != 0)
289                                        addconfig("mc_audio_ap_path", filelistpath->text);
290                        }
291
292                        playerstop();
293
294                        sleep(1);
295                        filelist->hidden = NO;
296                        listbox->hidden = YES;
297                        changetext(b2, _("Filelist-Mode"));
298                        changetext(b3, _("Random"));
299                        changetext(b4, _("Repeat"));                                                                           
300                        status.playspeed = 0;
301                        status.pause = 0;
302                        status.play = 0;
303                        status.random = 0;
304                        status.repeat = 0;
305                        playlist = 0;
306                        writevfd("Mediacenter");
307                       
308                        printf("exit: view=%d tmpview=%d\n", view, tmpview);                   
309                        status.filelistextend = 0;
310                        break;
311                }
312                else if(rcret == getrcconfigint("rcok", NULL))
313                {
314                        if(playlist == 1 && listbox->select != NULL)
315                        {
316                                debug(50, "listbox->select->name: %s", listbox->select->name);
317                                filename = ostrcat("", listbox->select->name, 0, 0);
318
319                                changetext(b2, _("Playlist-Mode"));
320                       
321                                debug(50, "screensaver title: %s", listbox->select->text);
322                                if(screensaver != NULL && screensaver->type == 0)
323                                        screensaver->value = listbox->select->text;
324
325                                debug(50, "playerstop");
326                                playerstop();
327                                sleep(1);
328                                drawscreen(infobar, 0);
329                                debug(50, "playerstart: %s", filename);
330                                eof = 0;
331
332                                playerret = playerstart(filename);
333                                playwritevfd(filename);
334
335                                #ifndef SIMULATE
336                                        if(playerret != 0)
337                                        {
338                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
339/*
340                                                writevfd("AudioPlayer Filelist-Mode");
341                                                status.play = 0;
342                                                playlist = 0;
343                                                status.playspeed = 0;
344
345                                                changetext(filelistpath, _(getconfig("mc_ap_path", NULL)));
346                                                filelist->hidden = NO;
347                                                listbox->hidden = YES;
348
349                                                delownerrc(apskin);
350                                                addscreenrc(apskin, filelist);
351                                                drawscreen(apskin, 0);
352*/
353// test
354                                                status.play = 1;
355                                                eof = 1;
356// test
357                                                continue;
358                                        }
359                                #endif
360                       
361                                status.play = 1;
362                        }
363                        else if(filelist->select != NULL && filelist->select->input != NULL)
364                        {
365                                // workaround dont open folder on rcchup
366                                if(skip == 1)
367                                {
368                                        drawscreen(apskin, 0);
369                                        writerc(getrcconfigint("rcok", NULL));
370                                        skip = 0;
371                                }
372                                else
373                                {
374                                        debug(50, "mc_mounter_chk start");
375                                        mc_mounter_chk(filelistpath);
376                                        debug(50, "mc_mounter_chk done");
377                                }                               
378                        }
379                        else if(filelist->select != NULL && filelist->select->input == NULL)
380                        {
381                                if(ostrcmp(getconfig("mc_ap_path", NULL), filelistpath->text) != 0)
382                                        addconfig("mc_ap_path", filelistpath->text);
383
384                                debug(50, "filelist->select->text: %s", filelist->select->text);
385                                filename = createpath(filelistpath->text, filelist->select->text);
386
387                                if(!strncmp(".rar",filename+strlen(filename)-4,4) || !strncmp(".iso",filename+strlen(filename)-4,4) || !strncmp(".img",filename+strlen(filename)-4,4))
388                                {
389                                        debug(50, "mc_mounter_main filename: %s", filename);
390                                        //addconfig("mc_ap_path", filelistpath->text);
391                                        currentdirectory = ostrcat("", getconfig("mc_ap_path", NULL), 0, 0);
392
393                                        mc_mounter_main(0,filename,filelistpath,filelist,apskin,filemask,tmpview,currentdirectory);
394                                        debug(50, "mc_mounter_main done");
395       
396                                        singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
397                                        continue;
398                                }
399                                else if(!strncmp(".m3u",filename+strlen(filename)-4,4) || !strncmp(".pls",filename+strlen(filename)-4,4)) 
400                                {
401                                        showplaylist(apskin, filelistpath, filelist, listbox, b2, 1, &playlist, &eof, &filename, &currentdirectory, &playertype, flag);
402                                        drawscreen(apskin, 0);
403                                        continue;
404                                }
405
406                                changetext(b2, _("Filelist-Mode"));
407                       
408                                if(screensaver != NULL && screensaver->type == 0)
409                                        screensaver->value = (void*)filelist->select->text;
410
411                                debug(50, "playerstop");
412                                playerstop();
413                                sleep(1);
414
415                                drawscreen(infobar, 0);
416                                debug(50, "playerstart: %s", filename);
417                                eof = 0;
418                                playerret = playerstart(filename);
419                                playwritevfd(filename);
420
421                                #ifndef SIMULATE
422                                        if(playerret != 0)
423                                        {
424                                                writevfd("AudioPlayer Filelist-Mode");
425                                                status.play = 0;
426                                                status.playspeed = 0;
427                                                textbox(_("Message"), _("Can't start playback !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
428                                                continue;
429                                        }
430                                #endif
431
432                                status.play = 1;
433
434                                singlepicstart("/var/usr/local/share/titan/plugins/mc/skin/default.mvi", 0);
435                        }
436                }
437                if(eof >=1 || playerisplaying() == 0)
438                {
439                        if(status.play == 1)
440                                playereof(apskin, filelist, listbox, filelistpath, b2, NULL, NULL, NULL, &skip, &eof, &playlist, playertype, flag);
441                }
442        }
443
444        deinitscreensaver();
445               
446        status.hangtime = getconfigint("hangtime", NULL);
447        delconfigtmp("dirsort");
448
449        delmarkedscreennodes(apskin, FILELISTDELMARK);
450        delownerrc(apskin);
451        clearscreen(apskin);
452
453        free(filename), filename = NULL;
454        free(currentdirectory), currentdirectory = NULL;
455
456        writevfd("Mediacenter");
457        debug(50, "closed");
458}
459
460#endif
461
Note: See TracBrowser for help on using the repository browser.