source: titan/plugins/tmc/tmc.h @ 25410

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

fix mts

File size: 48.9 KB
Line 
1#ifndef TMC_H
2#define TMC_H
3
4extern struct mediadbfilter* mediadbfilter;
5extern struct mediadbcategory* mediadbcategory;
6extern struct skin* skin;
7struct mediadbfilter* mediadbfilterpos = NULL;
8int mediadbfiltercount = 0;
9
10//Mainmenu
11int menu0pos = 0;
12char* menu0[] = {"skin/tmcsettings.png", "skin/tmcpicture.png", "skin/tmcvideo.png", "skin/tmcaudio.png", "skin/tmcdirplay.png", "skin/tmcplaylist.png", "skin/tmcexit.png"};
13char* menu0txt[] = {"Settings", "Picture", "Video", "Audio", "Play", "Playlist", "Exit"};
14
15//Settings
16int menu1pos = 0;
17char* menu1[] = {"skin/tmcscan.png", "skin/tmcscandir.png", "skin/tmcsettings.png", "skin/tmcdb.png", "skin/tmceditplaylist.png", "skin/tmcback.png"};
18char* menu1txt[] = {"Scan All", "Scan Dir", "Main", "Database Info", "Playlist Edit", "Back"};
19
20//Picture
21int menu2pos = 0;
22char* menu2[] = {"skin/tmccategory.png", "skin/tmcrandom.png", "skin/tmcall.png", "skin/tmcone.png", "skin/tmcaz.png", "skin/tmcback.png"};
23char* menu2txt[] = {"Category", "Random", "All", "Single", "A-Z", "Back"};
24
25//Video
26int menu3pos = 0;
27char* menu3[] = {"skin/tmcgenre.png", "skin/tmccategory.png", "skin/tmcall.png", "skin/tmcyear.png", "skin/tmcdirector.png", "skin/tmcactors.png", "skin/tmcrating.png", "skin/tmcaz.png", "skin/tmcnoimdb.png", "skin/tmcback.png"};
28char* menu3txt[] = {"Genre", "Category", "All", "Year", "Director", "Actors", "Rating", "A-Z", "No IMDB", "Back"};
29
30//Audio
31int menu4pos = 0;
32char* menu4[] = {"skin/tmccategory.png", "skin/tmcrandom.png", "skin/tmcall.png", "skin/tmcone.png", "skin/tmcgenre.png", "skin/tmcyear.png", "skin/tmcactors.png", "skin/tmcaz.png", "skin/tmcback.png"};
33char* menu4txt[] = {"Category", "Random", "All", "Single", "Genre", "Year", "Actors", "A-Z", "Back"};
34
35
36//flag 0: blit
37//flag 1: don't blit
38void tmcchangestatus(struct skin* tmcstatus, char* tmcstatusbg, int flag)
39{
40        int pos = 0;
41        char* tmpstr = NULL;
42
43        if(mediadbfilterpos != NULL) pos = mediadbfilterpos->count + 1;
44
45        tmpstr = ostrcat(oitoa(pos), " / ", 1, 0);
46        tmpstr = ostrcat(tmpstr, oitoa(mediadbfiltercount), 1, 1);
47
48        restorescreennofree(tmcstatusbg, tmcstatus);
49        changetext(tmcstatus, tmpstr);
50        drawscreen(tmcstatus, 0, flag);
51}
52
53//flag 0: don't draw
54//flag 1: draw
55void tmcpicdel(struct skin* tmcpictitle, struct skin* tmcpicstar, struct skin* tmcstatus, struct skin* tmcpic1, struct skin* tmcpic2, struct skin* tmcpic3, struct skin* tmcpic4, struct skin* tmcpic5, char* tmcpictitlebg, char* tmcpicstarbg, char* tmcstatusbg, int flag)
56{
57        changepic(tmcpic1, NULL);
58        changepic(tmcpic2, NULL);
59        changepic(tmcpic3, NULL);
60        changepic(tmcpic4, NULL);
61        changepic(tmcpic5, NULL);
62        changeret(tmcpic3, NULL);
63        changetext(tmcpictitle, NULL);
64        changepic(tmcpicstar, NULL);
65        changetext(tmcstatus, NULL);
66        restorescreennofree(tmcpictitlebg, tmcpictitle);
67        restorescreennofree(tmcpicstarbg, tmcpicstar);
68        restorescreennofree(tmcstatusbg, tmcstatus);
69
70        if(flag == 1)
71        {
72                drawscreen(tmcpic1, 0, 1);
73                drawscreen(tmcpic2, 0, 1);
74                drawscreen(tmcpic3, 0, 1);
75                drawscreen(tmcpic4, 0, 1);
76                drawscreen(tmcpic5, 0, 0);
77        }
78}
79
80//flag 0: draw only
81//flag 1: left
82//flag 2: right
83void tmcpicscroll(int menuid, struct skin* tmcpictitle, struct skin* tmcpicstar, struct skin* tmcstatus, struct skin* tmcpic1, struct skin* tmcpic2, struct skin* tmcpic3, struct skin* tmcpic4, struct skin* tmcpic5, char* tmcpictitlebg, char* tmcpicstarbg, char* tmcstatusbg, int flag)
84{
85        int count = 0;
86        struct mediadbfilter* node = mediadbfilterpos;
87        char* tmpstr = NULL, *tmpfile = NULL;
88
89        tmcpicdel(tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
90
91        while(1)
92        {
93                if(flag == 0 && count == 0)
94                {
95                        if(node == NULL) node = mediadbfilter;
96                        mediadbfilterpos = node;
97                }
98                if(flag == 1 && count == 0)
99                {
100                        if(node == NULL) node = mediadbfilter;
101                        if(node != NULL) node = node->next;
102                        if(node == NULL) node = mediadbfilter;
103                        mediadbfilterpos = node;
104                }
105                if(flag == 2 && count == 0)
106                {
107                        if(node == NULL) node = getlastmediadbfilter(mediadbfilter, 0);
108                        if(node != NULL) node = node->prev;
109                        if(node == NULL) node = getlastmediadbfilter(mediadbfilter, 0);
110                        mediadbfilterpos = node;
111                }
112                if(count != 0)
113                {
114                        if(node == NULL) node = mediadbfilter;
115                        if(node != NULL) node = node->next;
116                        if(node == NULL) node = mediadbfilter;
117                }
118
119                if(node != NULL && node->node != NULL)
120                {
121                        if(menuid == 2) //picture
122                        {
123                                if(node->node->poster != NULL && strlen(node->node->poster) > 0)
124                                {
125                                        tmpstr = ostrcat(getconfig("mediadbpath", NULL), "/", 0, 0);
126                                        tmpstr = ostrcat(tmpstr, node->node->poster, 1, 0);
127          if(getconfigint("tmcpreview", NULL) == 0)
128            tmpstr = ostrcat(tmpstr, "_thumb.jpg", 1, 0);
129          else
130            tmpstr = ostrcat(tmpstr, "_cover.jpg", 1, 0);
131                                }
132                                else
133                                {
134          if(getconfigint("tmcpreview", NULL) == 2)
135            tmpstr = ostrcat(node->node->path, "/", 0, 0);
136          else
137            tmpstr = ostrcat(node->node->path, "/.Thumbnails/", 0, 0);
138                                        tmpstr = ostrcat(tmpstr, node->node->file, 1, 0);
139                                        tmpstr = addmountpart(tmpstr, 1);
140                                }
141                        }
142                        else if(menuid == 3) //video
143                        {
144                                tmpstr = ostrcat(getconfig("mediadbpath", NULL), "/", 0, 0);
145                                tmpstr = ostrcat(tmpstr, node->node->poster, 1, 0);
146                                if(getconfigint("tmcpreview", NULL) == 0)
147          tmpstr = ostrcat(tmpstr, "_thumb.jpg", 1, 0);
148        else
149          tmpstr = ostrcat(tmpstr, "_cover.jpg", 1, 0);
150                        }
151                        else if(menuid == 4) //audio
152                        {
153                                tmpstr = ostrcat(getconfig("mediadbpath", NULL), "/", 0, 0);
154                                tmpstr = ostrcat(tmpstr, node->node->poster, 1, 0);
155                                if(getconfigint("tmcpreview", NULL) == 0)
156          tmpstr = ostrcat(tmpstr, "_thumb.jpg", 1, 0);
157        else
158          tmpstr = ostrcat(tmpstr, "_cover.jpg", 1, 0);
159                        }
160                       
161                        if(!file_exist(tmpstr))
162                        {
163                                free(tmpstr);
164                                if(menuid == 2)
165                                        tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcnopic.jpg", NULL, 0, 0);
166                                else if(menuid == 3)
167                                        tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcnovideo.jpg", NULL, 0, 0);
168                                else if(menuid == 4)
169                                        tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcnoaudio.jpg", NULL, 0, 0);
170                        }
171                       
172                        if(count == 0) changepic(tmcpic1, tmpstr);
173                        if(count == 1) changepic(tmcpic2, tmpstr);
174                        if(count == 2)
175                        {
176                                changepic(tmcpic3, tmpstr);
177                                tmpfile = ostrcat(node->node->path, "/", 0, 0);
178                                tmpfile = ostrcat(tmpfile, node->node->file, 1, 0);
179                                tmpfile = addmountpart(tmpfile, 1);
180                                changeret(tmcpic3, tmpfile);
181                                free(tmpfile); tmpfile = NULL;
182                                changetext(tmcpictitle, node->node->title);
183                               
184                                int rating = node->node->rating;
185                               
186                                if(rating > 9)
187                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar5.png");
188                                else if(rating > 8)
189                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar4x.png");
190                                else if(rating > 7)
191                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar4.png");
192                                else if(rating > 6)
193                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar3x.png");
194                                else if(rating > 5)
195                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar3.png");
196                                else if(rating > 4)
197                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar2x.png");
198                                else if(rating > 3)
199                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar2.png");
200                                else if(rating > 2)
201                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar1x.png");
202                                else if(rating > 1)
203                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar1.png");
204                                else if(rating > 0)
205                                        changepic(tmcpicstar, "%pluginpath%/tmc/skin/tmcstar0x.png");
206                                else
207                                        changepic(tmcpicstar, NULL);
208                        }
209                        if(count == 3) changepic(tmcpic4, tmpstr);
210                        if(count == 4) changepic(tmcpic5, tmpstr);
211                        free(tmpstr); tmpstr = NULL;
212                }
213                count++; if(count > 4) break;
214        }
215
216        tmcchangestatus(tmcstatus, tmcstatusbg, 1);
217
218        drawscreen(tmcpictitle, 0, 1);
219        drawscreen(tmcpicstar, 0, 1);
220        drawscreen(tmcpic1, 0, 1);
221        drawscreen(tmcpic2, 0, 1);
222        drawscreen(tmcpic3, 0, 1);
223        drawscreen(tmcpic4, 0, 1);
224        drawscreen(tmcpic5, 0, 0);
225}
226
227//flag 0: draw only
228//flag 1: left
229//flag 2: right
230void tmcmenuscroll(int menuid, int active, struct skin* tmcmenutxt, struct skin* tmcmenu1, struct skin* tmcmenu2, struct skin* tmcmenu3, struct skin* tmcmenu3p2, struct skin* tmcmenu4, struct skin* tmcmenu5, int flag)
231{
232        int id = 0, max = 0;
233        char** menu = NULL, **menutxt = NULL;
234        int *menupos = 0;
235        char* tmpstr = NULL;
236
237        if(menuid == 0)
238        {
239                menu = menu0;
240                menutxt = menu0txt;
241                max = (sizeof(menu0) / sizeof(char*)) - 1;
242                menupos = &menu0pos;
243        }
244        else if(menuid == 1)
245        {
246                menu = menu1;
247                menutxt = menu1txt;
248                max = (sizeof(menu1) / sizeof(char*)) - 1;
249                menupos = &menu1pos;
250        }
251        else if(menuid == 2)
252        {
253                menu = menu2;
254                menutxt = menu2txt;
255                max = (sizeof(menu2) / sizeof(char*)) - 1;
256                menupos = &menu2pos;
257        }
258        else if(menuid == 3)
259        {
260                menu = menu3;
261                menutxt = menu3txt;
262                max = (sizeof(menu3) / sizeof(char*)) - 1;
263                menupos = &menu3pos;
264        }
265        else if(menuid == 4)
266        {
267                menu = menu4;
268                menutxt = menu4txt;
269                max = (sizeof(menu4) / sizeof(char*)) - 1;
270                menupos = &menu4pos;
271        }
272
273        if(flag == 1) (*menupos)++;
274        if(flag == 2) (*menupos)--;
275
276        if(*menupos < 0) *menupos = max;
277        if(*menupos > max) *menupos = 0;
278
279        id = *menupos;
280
281        if(id > max) id = 0;
282        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
283        changepic(tmcmenu1, tmpstr);
284        free(tmpstr); tmpstr = NULL;
285        id++;
286
287        if(id > max) id = 0;
288        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
289        changepic(tmcmenu2, tmpstr);
290        free(tmpstr); tmpstr = NULL;
291        id++;
292
293        if(id > max) id = 0;
294        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
295        changepic(tmcmenu3p2, tmpstr);
296        free(tmpstr); tmpstr = NULL;
297        changetext(tmcmenutxt, _(menutxt[id]));
298        changeret(tmcmenutxt, menutxt[id]);
299        id++;
300
301        if(id > max) id = 0;
302        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
303        changepic(tmcmenu4, tmpstr);
304        free(tmpstr); tmpstr = NULL;
305        id++;
306
307        if(id > max) id = 0;
308        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
309        changepic(tmcmenu5, tmpstr);
310        free(tmpstr); tmpstr = NULL;
311
312        if(active == 1)
313        {
314                changetext(tmcmenu1, NULL);
315                changetext(tmcmenu2, NULL);
316                changetext(tmcmenu3p2, NULL);
317                changetext(tmcmenu4, NULL);
318                changetext(tmcmenu5, NULL);
319        }
320        else
321        {
322                changetext(tmcmenu1, "X");
323                changetext(tmcmenu2, "X");
324                changetext(tmcmenu3p2, "X");
325                changetext(tmcmenu4, "X");
326                changetext(tmcmenu5, "X");
327        }
328
329        drawscreen(tmcmenutxt, 0, 1);
330        drawscreen(tmcmenu1, 0, 1);
331        drawscreen(tmcmenu2, 0, 1);
332        drawscreen(tmcmenu3, 0, 1);
333        drawscreen(tmcmenu4, 0, 1);
334        drawscreen(tmcmenu5, 0, 0);
335}
336
337char* screentmcdirplay()
338{
339        struct skin* dir = getscreen("dir");
340        char* ret = NULL, *bg = NULL, *formats = NULL;
341
342        dir->width = 700;
343        dir->prozwidth = 0;
344        dir->height = 650;
345        dir->prozheight = 0;
346
347        drawscreen(dir, 2, 0);
348        bg = savescreen(dir);
349
350        //if(status.expertmodus > 0 && status.security == 1)
351                formats = ostrcat(formats, "*.flac *.ogg *.mp3 *.avi *.dat *.divx *.flv *.mkv *.m4v *.mp4 *.mov *.mpg *.mpeg *.mts *.m2ts *.trp *.ts *.vdr *.vob *.wmv *.rm", 1, 0);
352        //else
353                //formats = ostrcat(formats, "*.ts", 1, 0);
354
355        ret = screendir(getconfig("rec_moviepath", NULL), formats, NULL, NULL, NULL, NULL, 0, "SELECT", getrcconfigint("rcgreen", NULL), NULL, 0, NULL, 0, dir->width, dir->prozwidth, dir->height, dir->prozheight, 0);
356
357        restorescreen(bg, dir);
358        free(formats); formats = NULL;
359        blitfb(0);
360        return ret;
361}
362
363void screentmcdb()
364{
365        int rcret = 0, videocount = 0, audiocount = 0, picturecount = 0;
366        struct skin* tmcpic3 = getscreen("tmcpic3");
367        struct skin* listbox = getscreennode(tmcpic3, "listbox");
368        struct skin* tmp = NULL;
369        char* tmpstr = NULL, *tmppic = NULL;
370
371        tmppic = ostrcat(tmcpic3->pic, NULL, 0, 0);
372        changepic(tmcpic3, NULL);
373        tmcpic3->bgcol = 0;
374
375        addscreenrc(tmcpic3, listbox);
376
377        while(1)
378        {
379                tmp = NULL;
380                videocount = 0, audiocount = 0, picturecount = 0;
381                getmediadbcounts(&videocount, &audiocount, &picturecount);
382                delmarkedscreennodes(tmcpic3, 1);
383
384                tmp = addlistbox(tmcpic3, listbox, tmp, 1);
385                if(tmp != NULL)
386                {
387                        tmpstr = ostrcat(_("Status"), ": ", 0, 0);
388                        if(status.mediadbthread != NULL)
389                                tmpstr = ostrcat(tmpstr, _("scan"), 1, 0);
390                        else
391                                tmpstr = ostrcat(tmpstr, _("idle"), 1, 0);
392                        changetext(tmp, tmpstr);
393                        free(tmpstr); tmpstr = NULL;
394                }
395
396                tmp = addlistbox(tmcpic3, listbox, tmp, 1);
397                if(tmp != NULL)
398                {
399                        tmpstr = ostrcat(_("Video"), ": ", 0, 0);
400                        tmpstr = ostrcat(tmpstr, oitoa(videocount), 1, 1);
401                        changetext(tmp, tmpstr);
402                        free(tmpstr); tmpstr = NULL;
403                }
404
405                tmp = addlistbox(tmcpic3, listbox, tmp, 1);
406                if(tmp != NULL)
407                {
408                        tmpstr = ostrcat(_("Audio"), ": ", 0, 0);
409                        tmpstr = ostrcat(tmpstr, oitoa(audiocount), 1, 1);
410                        changetext(tmp, tmpstr);
411                        free(tmpstr); tmpstr = NULL;
412                }
413
414                tmp = addlistbox(tmcpic3, listbox, tmp, 1);
415                if(tmp != NULL)
416                {
417                        tmpstr = ostrcat(_("Picture"), ": ", 0, 0);
418                        tmpstr = ostrcat(tmpstr, oitoa(picturecount), 1, 1);
419                        changetext(tmp, tmpstr);
420                        free(tmpstr); tmpstr = NULL;
421                }
422               
423                drawscreen(tmcpic3, 0, 0);
424                rcret = waitrc(tmcpic3, 1000, 0);
425
426                if(rcret == getrcconfigint("rcexit", NULL)) break;
427                if(rcret == getrcconfigint("rcok", NULL)) break;
428        }
429
430        delownerrc(tmcpic3);
431        delmarkedscreennodes(tmcpic3, 1);
432
433        changepic(tmcpic3, tmppic);
434        tmcpic3->bgcol = -1;
435        free(tmppic); tmppic = NULL;
436        drawscreen(tmcpic3, 0, 0);
437}
438
439char* screentmccategory(int type, char* category)
440{
441        int rcret = 0;
442        struct skin* tmcpic3 = getscreen("tmcpic3");
443        struct skin* listbox = getscreennode(tmcpic3, "listbox");
444        struct skin* tmp = NULL;
445        struct mediadbcategory* node = NULL;
446        char* tmpstr = NULL, *tmppic = NULL, *ret = NULL;
447
448        tmppic = ostrcat(tmcpic3->pic, NULL, 0, 0);
449        changepic(tmcpic3, NULL);
450        tmcpic3->bgcol = 0;
451
452        tmpstr = ostrcat(getconfig("mediadbfile", NULL), category, 0, 0);
453
454        if(status.mediadbthreadstatus != 3)
455        {
456                freemediadbcategory(0);
457                readmediadb(tmpstr, type, 1);
458
459                node = mediadbcategory;
460                while(node != NULL)
461                {
462                        tmp = addlistbox(tmcpic3, listbox, tmp, 1);
463                        if(tmp != NULL)
464                        {
465                                changetext(tmp, node->name);
466                        }
467                        node = node->next;
468                }
469                freemediadbcategory(0);
470        }
471        free(tmpstr); tmpstr = NULL;
472
473        addscreenrc(tmcpic3, listbox);
474        drawscreen(tmcpic3, 0, 0);
475
476        while(1)
477        {
478                rcret = waitrc(tmcpic3, 0, 0);
479
480                if(rcret == getrcconfigint("rcexit", NULL)) break;
481
482                if(rcret == getrcconfigint("rcok", NULL) && listbox->select != NULL)
483                {
484                        ret = ostrcat(listbox->select->text, NULL, 0, 0);
485                        break;
486                }
487        }
488
489        delownerrc(tmcpic3);
490        delmarkedscreennodes(tmcpic3, 1);
491
492        changepic(tmcpic3, tmppic);
493        tmcpic3->bgcol = -1;
494        free(tmppic); tmppic = NULL;
495        drawscreen(tmcpic3, 0, 0);
496
497        return ret;
498}
499
500int screentmcsettings()
501{
502        int rcret = 0, ret = 0;
503        struct skin* tmcpic3 = getscreen("tmcpic3");
504        struct skin* listbox = getscreennode(tmcpic3, "listbox");
505        struct skin* pictimeout = getscreennode(tmcpic3, "pictimeout");
506        struct skin* picfull = getscreennode(tmcpic3, "picfull");
507        struct skin* picname = getscreennode(tmcpic3, "picname");
508        struct skin* scan = getscreennode(tmcpic3, "scan");
509        struct skin* bgpic = getscreennode(tmcpic3, "bgpic");
510  struct skin* preview = getscreennode(tmcpic3, "preview");
511        struct skin* tmp = NULL;
512        char* tmppic = NULL;
513
514        tmppic = ostrcat(tmcpic3->pic, NULL, 0, 0);
515        changepic(tmcpic3, NULL);
516        tmcpic3->bgcol = 0;
517
518        pictimeout->hidden = NO;
519        picfull->hidden = NO;
520        picname->hidden = NO;
521        scan->hidden = NO;
522        bgpic->hidden = NO;
523  preview->hidden = NO;
524
525        addchoicebox(pictimeout, "5", "5");
526        addchoicebox(pictimeout, "10", "10");
527        addchoicebox(pictimeout, "15", "15");
528        addchoicebox(pictimeout, "20", "20");
529        setchoiceboxselection(pictimeout, getconfig("tmcpictimeout", NULL));
530
531        addchoicebox(picfull, "0", _("no"));
532        addchoicebox(picfull, "1", _("yes"));
533        setchoiceboxselection(picfull, getconfig("tmcpicfull", NULL));
534
535        addchoicebox(picname, "0", _("no"));
536        addchoicebox(picname, "1", _("yes"));
537        setchoiceboxselection(picname, getconfig("tmcpicname", NULL));
538
539        addchoicebox(scan, "0", _("all"));
540        addchoicebox(scan, "1", _("video"));
541        addchoicebox(scan, "2", _("audio"));
542        addchoicebox(scan, "3", _("picture"));
543        addchoicebox(scan, "91", _("video / audio"));
544        addchoicebox(scan, "92", _("video / picture"));
545        addchoicebox(scan, "93", _("audio / picture"));
546        setchoiceboxselection(scan, getconfig("tmcscan", NULL));
547
548        addchoicebox(bgpic, "0", _("pic1"));
549        addchoicebox(bgpic, "1", _("pic2"));
550        addchoicebox(bgpic, "2", _("pic3"));
551        addchoicebox(bgpic, "3", _("pic4"));
552        addchoicebox(bgpic, "4", _("pic5"));
553        addchoicebox(bgpic, "1000", _("no pic"));
554        setchoiceboxselection(bgpic, getconfig("tmcbgpic", NULL));
555 
556  addchoicebox(preview, "0", _("slow"));
557        addchoicebox(preview, "1", _("normal"));
558  addchoicebox(preview, "2", _("high"));
559        setchoiceboxselection(preview, getconfig("tmcpreview", NULL));
560
561        addscreenrc(tmcpic3, listbox);
562        drawscreen(tmcpic3, 0, 0);
563
564        tmp = listbox->select;
565        while(1)
566        {
567                addscreenrc(tmcpic3, tmp);
568                rcret = waitrc(tmcpic3, 0, 0);
569                tmp = listbox->select;
570
571                if(rcret == getrcconfigint("rcexit", NULL)) break;
572
573                if(rcret == getrcconfigint("rcok", NULL) && listbox->select != NULL)
574                {
575                        addconfigscreencheck("tmcpictimeout", pictimeout, "5");
576                        addconfigscreencheck("tmcpicname", picname, "0");
577                        addconfigscreencheck("tmcpicfull", picfull, "0");
578                        addconfigscreencheck("tmcscan", scan, "0");
579                        if(ostrcmp(bgpic->ret, getconfig("tmcbgpic", NULL)) != 0) ret = 1;
580                        addconfigscreencheck("tmcbgpic", bgpic, "0");
581      addconfigscreencheck("tmcpreview", preview, "0");
582                        break;
583                }
584        }
585
586        pictimeout->hidden = YES;
587        picfull->hidden = YES;
588        picname->hidden = YES;
589        scan->hidden = YES;
590        bgpic->hidden = YES;
591  preview->hidden = YES;
592
593        delownerrc(tmcpic3);
594
595        changepic(tmcpic3, tmppic);
596        tmcpic3->bgcol = -1;
597        free(tmppic); tmppic = NULL;
598        drawscreen(tmcpic3, 0, 0);
599
600        return ret;
601}
602
603char* tmcscreenscandir()
604{
605        struct skin* dir = getscreen("dir");
606        char* ret = NULL, *bg = NULL;
607
608        dir->width = 700;
609        dir->prozwidth = 0;
610        dir->height = 650;
611        dir->prozheight = 0;
612
613        drawscreen(dir, 2, 0);
614        bg = savescreen(dir);
615
616        ret = screendir(getconfig("rec_moviepath", NULL), "", NULL, NULL, NULL, NULL, 0, "SELECT", getrcconfigint("rcgreen", NULL), NULL, 0, NULL, 0, dir->width, dir->prozwidth, dir->height, dir->prozheight, 0);
617
618        restorescreen(bg, dir);
619        blitfb(0);
620        return ret;
621}
622
623void screentmcepg(char* file)
624{
625        int rcret = -1;
626        char* bg = NULL;
627        struct skin* tmcepg = getscreen("tmcepg");
628
629        if(file != NULL)
630        {
631                drawscreen(tmcepg, 2, 0);
632                bg = savescreen(tmcepg);
633
634                readlabelext(tmcepg, file, ".epg");
635                drawscreen(tmcepg, 0, 0);
636
637                while(1)
638                {
639                        rcret = waitrc(tmcepg, 0, 0);
640
641                        if(rcret == getrcconfigint("rcexit", NULL)) break;
642                        if(rcret == getrcconfigint("rcok", NULL)) break;
643                }
644
645                clearscreen(tmcepg);
646                restorescreen(bg, tmcepg);
647        }
648}
649
650//flag 0: editmode
651//flag 1: showmode
652struct mainplaylist* screentmcplaylist(int flag)
653{
654//TODO:
655        struct mainplaylist* mplaylist = NULL;
656        struct skin* playlist = getscreen("playlist");
657        char* bg = NULL;
658
659        drawscreen(playlist, 2, 0);
660        bg = savescreen(playlist);
661
662        mplaylist = screenmainplaylist(flag);
663
664        restorescreen(bg, playlist);
665        blitfb(0);
666
667        return mplaylist;
668}
669
670int screentmcdelete(char* file)
671{
672        int ret = 0, tret = 0, width = 800, height = 300;
673        struct skin* tbox = getscreen("messagebox");
674        char* tmpstr = NULL, *bg = NULL, *tmpfile = NULL;
675        struct mediadb* node = NULL;
676
677        if(file != NULL)
678        {
679                char* dname = ostrcat(file, NULL, 0, 0);
680                dname = dirname(dname);
681                node = getmediadb(dname, basename(file), 0);
682                free(dname); dname = NULL;
683        }
684
685        if(node != NULL)
686        {
687                tbox->width = width;
688                tbox->height = height;
689
690                drawscreen(tbox, 2, 0);
691                bg = savescreen(tbox);
692
693                tmpfile = ostrcat(node->path, "/", 0, 0);
694                tmpfile = ostrcat(tmpfile, node->file, 1, 0);
695                tmpfile = addmountpart(tmpfile, 1);
696
697                if(tmpfile != NULL)
698                {
699                        tmpstr = ostrcat(_("Delete selected entry ?"), "\n\n", 0, 0);
700                        tmpstr = ostrcat(tmpstr, tmpfile, 1, 0);
701                        tmpstr = ostrcat(tmpstr, "\n\nOK = delete DB only\nRED = delete DB and file", 1, 0);
702                        tret = textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("RED"), getrcconfigint("rcred", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, width, height, 0, 3);
703                        free(tmpstr); tmpstr = NULL;
704
705                        if(tret == 1) //del only DB
706                        {
707                                struct mediadbfilter* mf = mediadbfilterpos;
708                                if(mediadbfilterpos != NULL) mediadbfilterpos = mediadbfilterpos->next;
709                                delmediadbfilter(mf, 0);
710                                delmediadb(node, 0);
711                                status.writemediadb = 1;
712                                ret = 1;
713                        }
714                        if(tret == 2) //del file and DB
715                        {
716                                struct mediadbfilter* mf = mediadbfilterpos;
717                                if(mediadbfilterpos != NULL) mediadbfilterpos = mediadbfilterpos->next;
718                                unlink(tmpfile);
719                                delmediadbfilter(mf, 0);
720                                delmediadb(node, 0);
721                                status.writemediadb = 1;
722                                ret = 1;
723                        }
724                }
725
726                free(tmpfile); tmpfile = NULL;
727                restorescreen(bg, tbox);
728        }
729
730        return ret;
731}
732
733void screentmcimdbsearch(char* file, int menuid)
734{
735        int type = 0;
736        struct tmdb* tmdb = NULL;
737        struct mediadb* node = NULL;
738        struct skin* tmdbplugin = NULL;
739        struct skin* tmcinfo = getscreen("tmcinfo");
740        char* bg = NULL;
741
742        if(file != NULL)
743        {
744                char* dname = ostrcat(file, NULL, 0, 0);
745                dname = dirname(dname);
746                node = getmediadb(dname, basename(file), 0);
747                free(dname); dname = NULL;
748        }
749
750        if(node == NULL) return;
751
752        if(menuid == 3) type = 0; //video
753        if(menuid == 4) type = 1; //audio
754        if(menuid == 2) type = 2; //picture
755
756        //create imdb search name
757        char* shortname = ostrcat(file, NULL, 0, 0);
758        string_tolower(shortname);
759//      shortname = string_shortname(shortname, 1);
760        shortname = string_shortname(shortname, 2);
761        string_removechar(shortname);
762        strstrip(shortname);
763       
764        char* fileinfo = ostrcat(getfilenameext(file), NULL , 0, 1);                   
765
766        tmdbplugin = getplugin("TMDb");
767        if(tmdbplugin != NULL)
768        {
769                struct tmdb* (*startplugin)(char*, char*, int, char*, char*);
770                startplugin = dlsym(tmdbplugin->pluginhandle, "screentmdb");
771                if(startplugin != NULL)
772                {
773                        drawscreen(tmcinfo, 2, 0);
774                        bg = savescreen(tmcinfo);
775
776                        tmdb = startplugin(shortname, "tmcinfo", 1, NULL, NULL);
777
778                        if(tmdb != NULL)
779                        {
780                                node->flag = setbit(node->flag, 31);
781                                node = createmediadb(node, tmdb->id, type, tmdb->title, tmdb->year, tmdb->released, tmdb->runtime, tmdb->genre, NULL, NULL, NULL, tmdb->plot, tmdb->mvi, tmdb->rating, tmdb->votes, node->path, node->file, shortname, fileinfo, node->flag, node->backdropcount);
782                        }
783
784                        clearscreen(tmcinfo);
785                        restorescreen(bg, tmcinfo);
786                        blitfb(0);
787                }
788        }
789
790        free(shortname), shortname = NULL;
791        free(fileinfo), fileinfo = NULL;
792}
793
794void screentmcinfo(char* file, int menuid)
795{
796        int rcret = 0;
797        struct skin* tmcinfo = getscreen("tmcinfo");
798        struct skin* title = getscreennode(tmcinfo, "title");
799        struct skin* released = getscreennode(tmcinfo, "released");
800        struct skin* runtime = getscreennode(tmcinfo, "rating");
801        struct skin* genre = getscreennode(tmcinfo, "genre");
802        struct skin* director = getscreennode(tmcinfo, "orgname");
803        struct skin* plot = getscreennode(tmcinfo, "plot");
804        struct skin* votes = getscreennode(tmcinfo, "votes");
805        struct skin* cover = getscreennode(tmcinfo, "cover");
806        char* tmpstr = NULL, *bg = NULL;
807        struct mediadb* node = NULL;
808       
809        if(file != NULL)
810        {
811                char* dname = ostrcat(file, NULL, 0, 0);
812                dname = dirname(dname);
813                node = getmediadb(dname, basename(file), 0);
814                free(dname); dname = NULL;
815        }
816
817        if(node != NULL)
818        {
819                changetext(title, node->title);
820                changetext(released, node->released);
821                changetext(runtime, node->runtime);
822                changetext(genre, node->genre);
823                changetext(director, node->director);
824
825                tmpstr = oitoa(node->votes);
826                changeinput(votes, tmpstr);
827                free(tmpstr); tmpstr = NULL;
828
829                changetext(plot, node->plot);
830
831                tmpstr = ostrcat(getconfig("mediadb", NULL), "/", 0, 0);
832                tmpstr = ostrcat(node->poster, "_cover.jpg", 0, 0);
833                changepic(cover, tmpstr);
834                free(tmpstr); tmpstr = NULL;
835        }
836
837        drawscreen(tmcinfo, 2, 0);
838        bg = savescreen(tmcinfo);
839       
840        drawscreen(tmcinfo, 0, 0);
841
842        while(1)
843        {
844                rcret = waitrc(tmcinfo, 0, 0);
845       
846                if(rcret == getrcconfigint("rcexit", NULL)) break;
847                if(rcret == getrcconfigint("rcok", NULL)) break;
848        }
849
850        clearscreen(tmcinfo);
851        restorescreen(bg, tmcinfo);
852        blitfb(0);
853}
854
855void screentmcdbmenu(char* file, int menuid)
856{
857        int rcret = 0;
858        struct skin* tmcpic3 = getscreen("tmcpic3");
859        struct skin* listbox = getscreennode(tmcpic3, "listbox");
860        struct skin* edit = getscreennode(tmcpic3, "edit");
861        struct skin* delete = getscreennode(tmcpic3, "delete");
862        struct skin* imdbsearch = getscreennode(tmcpic3, "imdbsearch");
863        struct skin* info = getscreennode(tmcpic3, "imdbsearch");
864        char* tmppic = NULL;
865
866        tmppic = ostrcat(tmcpic3->pic, NULL, 0, 0);
867        changepic(tmcpic3, NULL);
868        tmcpic3->bgcol = 0;
869
870        edit->hidden = NO;
871        delete->hidden = NO;
872        if(menuid == 3)
873                imdbsearch->hidden = NO;
874        info->hidden = NO;
875
876        addscreenrc(tmcpic3, listbox);
877        drawscreen(tmcpic3, 0, 0);
878
879        while(1)
880        {
881                rcret = waitrc(tmcpic3, 0, 0);
882
883                if(rcret == getrcconfigint("rcexit", NULL)) break;
884
885                if(rcret == getrcconfigint("rcok", NULL) && listbox->select != NULL)
886                {
887                        if(ostrcmp(listbox->select->name, "edit") == 0)
888                                screenmediadbedit(file, menuid, 1);
889                        if(ostrcmp(listbox->select->name, "delete") == 0)
890                        {
891                                if(screentmcdelete(file) == 1)
892                                        break;
893                        }
894                        if(menuid == 3 && ostrcmp(listbox->select->name, "imdbsearch") == 0)
895                                screentmcimdbsearch(file, menuid);
896                        if(ostrcmp(listbox->select->name, "info") == 0)
897                                screentmcinfo(file, menuid);
898
899                        drawscreen(tmcpic3, 0, 0);
900                }
901        }
902
903        edit->hidden = YES;
904        delete->hidden = YES;
905        imdbsearch->hidden = YES;
906        info->hidden = YES;
907
908        delownerrc(tmcpic3);
909
910        changepic(tmcpic3, tmppic);
911        tmcpic3->bgcol = -1;
912        free(tmppic); tmppic = NULL;
913        drawscreen(tmcpic3, 0, 0);
914}
915
916int screentmcpicplay(char* picture)
917{
918        int rcret = 0, timeout = 0, ret = 0;
919        struct skin* picplay = getscreen("tmcpicplay");
920        struct skin* picname = getscreennode(picplay, "picname");
921        struct skin* pic = getscreennode(picplay, "pic");
922
923        timeout = getconfigint("tmcpictimeout", NULL) * 1000;
924        if(timeout == 0) timeout = 5000;
925
926        if(getconfigint("tmcpicname", NULL) == 1)
927                changetext(picname, picture);
928        else
929                changetext(picname, NULL);
930
931        if(getconfigint("tmcpicfull", NULL) == 1)
932        {
933                pic->picheight = 720;
934                pic->picwidth = 1280;
935        }
936        else
937        {
938                pic->picheight = 1;
939                pic->picwidth = 1;
940        }
941
942        changepic(pic, picture);
943
944        drawscreen(picplay, 0, 0);
945
946        while(1)
947        {
948                rcret = waitrc(picplay, timeout, 0);
949
950                if(rcret == getrcconfigint("rcexit", NULL))
951                {
952                        ret = 1;
953                        break;
954                }
955                if(rcret == getrcconfigint("rcok", NULL)) break;
956                if(rcret == RCTIMEOUT) break;
957        }
958
959        return ret;
960}
961
962void tmcsetbutton(int picplaytype, int audioplaytype)
963{
964        menu2[1] = "skin/tmcrandom.png";
965        menu2[3] = "skin/tmcone.png";
966        if(picplaytype == 1) menu2[3] = "skin/tmcone_act.png";
967        if(picplaytype == 2) menu2[1] = "skin/tmcrandom_act.png";
968       
969        menu4[1] = "skin/tmcrandom.png";
970        menu4[3] = "skin/tmcone.png";
971        if(audioplaytype == 1) menu4[3] = "skin/tmcone_act.png";
972        if(audioplaytype == 2) menu4[1] = "skin/tmcrandom_act.png";
973}
974
975void screentmcmenu()
976{
977        int rcret = 0, menuid = 0, active = 1;
978        int audioplaytype = 0, picplaytype = 0, playlistplaytype = 0;
979        struct skin* tmcbg = getscreen("tmcbg");
980        struct skin* load = getscreen("loading");
981        struct skin* tmcmenutxt = getscreen("tmcmenutxt");
982        struct skin* tmcmenu1 = getscreen("tmcmenu1");
983        struct skin* tmcmenu2 = getscreen("tmcmenu2");
984        struct skin* tmcmenu3 = getscreen("tmcmenu3");
985        struct skin* tmcmenu3p2 = getscreennode(tmcmenu3, "tmcmenu3p2");
986        struct skin* tmcmenu4 = getscreen("tmcmenu4");
987        struct skin* tmcmenu5 = getscreen("tmcmenu5");
988        struct skin* tmcpictitle = getscreen("tmcpictitle");
989        struct skin* tmcpicstar = getscreen("tmcpicstar");
990        struct skin* tmcstatus = getscreen("tmcstatus");
991        struct skin* tmcpic1 = getscreen("tmcpic1");
992        struct skin* tmcpic2 = getscreen("tmcpic2");
993        struct skin* tmcpic3 = getscreen("tmcpic3");
994        struct skin* tmcpic4 = getscreen("tmcpic4");
995        struct skin* tmcpic5 = getscreen("tmcpic5");
996        char* tmpstr = NULL;
997        char* tmcpictitlebg = NULL, *tmcpicstarbg = NULL, *tmcstatusbg = NULL;
998
999        setfbtransparent(255);
1000
1001        //checks
1002        if(!file_exist(getconfig("mediadbpath", NULL)))
1003        {
1004                tmpstr = ostrcat(_("MediaDB Path not found!\nConfigure it in MediaDB Settings"), "\n\n", 0, 0);
1005                tmpstr = ostrcat(tmpstr, _("Path: "), 1, 0);
1006                tmpstr = ostrcat(tmpstr, getconfig("mediadbpath", NULL), 1, 0);
1007                textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
1008        }
1009        else
1010        {
1011                if(!file_exist(getconfig("mediadbfile", NULL)))
1012                        textbox(_("Message"), _("MediaDB not found!\nScan your HDD in TMC Settings"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
1013        }
1014
1015        //TODO: TMDB and so on
1016 if(getplugin("IMDb-API") == NULL && getplugin("IMDb") == NULL && getplugin("TMDb") == NULL)
1017                textbox(_("Message"), _("IMDB Plugin not found!\nCan't get detail media infos\nPlease install it"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
1018
1019        drawscreen(load, 0, 0);
1020        readmediadb(getconfig("mediadbfile", NULL), 0, 0);
1021        mediadbfilterpos = NULL;
1022        mediadbfiltercount = 0;
1023
1024        menu0pos = 0;
1025        menu1pos = 0;
1026        menu2pos = 0;
1027        menu3pos = 0;
1028        menu4pos = 0;
1029
1030        tmcsetbutton(picplaytype, audioplaytype);
1031        tmcpicdel(tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1032
1033        if(getconfigint("tmcbgpic", NULL) != 1000)
1034        {
1035                char* tmpbgpic = getconfig("tmcbgpic", NULL);
1036                if(tmpbgpic == NULL)
1037                        tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcbg", "0", 0, 0);
1038                else
1039                        tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcbg", tmpbgpic, 0, 0);
1040                tmpstr = ostrcat(tmpstr, ".jpg", 1, 0);
1041                changepic(tmcbg, tmpstr);
1042                free(tmpstr); tmpstr = NULL;
1043        }
1044        else
1045                changepic(tmcbg, NULL);
1046
1047        drawscreen(tmcbg, 0, 1);
1048        drawscreen(tmcpic1, 0, 1);
1049        drawscreen(tmcpic2, 0, 1);
1050        drawscreen(tmcpic3, 0, 1);
1051        drawscreen(tmcpic4, 0, 1);
1052        drawscreen(tmcpic5, 0, 1);
1053        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1054       
1055        //save backgrounds
1056        drawscreen(tmcpictitle, 2, 0);
1057        drawscreen(tmcpicstar, 2, 0);
1058        drawscreen(tmcstatus, 2, 0);
1059
1060        tmcpictitlebg = savescreen(tmcpictitle);
1061        tmcpicstarbg = savescreen(tmcpicstar);
1062        tmcstatusbg = savescreen(tmcstatus);
1063
1064        while(1)
1065        {
1066                rcret = waitrc(NULL, 0, 0);
1067
1068                if(menuid > 1 && (rcret == getrcconfigint("rcup", NULL) || rcret == getrcconfigint("rcdown", NULL)))
1069                {
1070                        if(active == 1)
1071                        {
1072                                active = 0;
1073                                tmcpic3->bordersize += 10;
1074                        }
1075                        else
1076                        {
1077                                active = 1;
1078                                tmcpic3->bordersize -= 10;
1079                        }
1080                        drawscreen(tmcpic3, 0, 0);
1081
1082                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1083                        continue;
1084                }
1085
1086                if(rcret == getrcconfigint("rcexit", NULL))
1087                {
1088                        if(active == 1)
1089                        {
1090                                if(menuid == 0) break;
1091                                menuid = 0;
1092                                tmcpicdel(tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 1);
1093
1094                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1095                                continue;
1096                        }
1097                }
1098
1099                if(rcret == getrcconfigint("rcleft", NULL))
1100                {
1101                        if(active == 1)
1102                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 1);
1103                        else
1104                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 1);
1105                        continue;
1106                }
1107
1108                if(rcret == getrcconfigint("rcright", NULL))
1109                {
1110                        if(active == 1)
1111                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 2);
1112                        else
1113                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 2);
1114                        continue;
1115                }
1116
1117                if(rcret == getrcconfigint("rcmenu", NULL) && active == 0)
1118                {
1119                        screentmcdbmenu(tmcpic3->ret, menuid);
1120                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1121                }
1122
1123                if(rcret == getrcconfigint("rcinfo", NULL) && active == 0)
1124                        screentmcinfo(tmcpic3->ret, menuid);
1125
1126                if(rcret == getrcconfigint("rcepg", NULL) && active == 1 && menuid == 3) //only video
1127                        screentmcepg(tmcpic3->ret);
1128
1129                if(rcret == getrcconfigint("rcok", NULL))
1130                {
1131                        if(active == 1)
1132                        {
1133                                if(ostrcmp("Exit", tmcmenutxt->ret) == 0)
1134                                        break;
1135                                else if(ostrcmp("Back", tmcmenutxt->ret) == 0)
1136                                {
1137                                        menuid = 0;
1138                                        tmcpicdel(tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 1);
1139                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1140                                }
1141                                else if(ostrcmp("Settings", tmcmenutxt->ret) == 0) //mainmenu settings
1142                                {
1143                                        menuid = 1;
1144                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1145                                }
1146                                else if(menuid == 1 && ostrcmp("Scan All", tmcmenutxt->ret) == 0)
1147                                {
1148                                        int scantype = getconfigint("tmcscan", NULL);
1149
1150                                        if(scantype == 0)
1151                                                scantype = 100;
1152                                        else
1153                                                scantype--;
1154
1155                                        mediadbscan(NULL, scantype, 0);
1156                                        screentmcdb();
1157                                }
1158                                else if(menuid == 1 && ostrcmp("Scan Dir", tmcmenutxt->ret) == 0)
1159                                {
1160                                        char* scanpath = tmcscreenscandir();
1161
1162                                        if(scanpath != NULL)
1163                                        {
1164                                                int scantype = getconfigint("tmcscan", NULL);
1165
1166                                                if(scantype == 0)
1167                                                        scantype = 100;
1168                                                else
1169                                                        scantype--;
1170
1171                                                mediadbscan(scanpath, scantype, 0);
1172                                                free(scanpath); scanpath = NULL;
1173                                                screentmcdb();
1174                                        }
1175                                }
1176                                else if(menuid == 1 && ostrcmp("Database Info", tmcmenutxt->ret) == 0)
1177                                {
1178                                        screentmcdb();
1179                                }
1180                                else if(menuid == 1 && ostrcmp("Playlist Edit", tmcmenutxt->ret) == 0)
1181                                {
1182                                        screentmcplaylist(0);
1183                                }
1184                                else if(menuid == 1 && ostrcmp("Main", tmcmenutxt->ret) == 0)
1185                                {
1186                                        if(screentmcsettings() == 1)
1187                                        {
1188                                                if(getconfigint("tmcbgpic", NULL) != 1000)
1189                                                {
1190                                                        char* tmpbgpic = getconfig("tmcbgpic", NULL);
1191                                                        if(tmpbgpic == NULL)
1192                                                                tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcbg", "0", 0, 0);
1193                                                        else
1194                                                                tmpstr = ostrcat("%pluginpath%/tmc/skin/tmcbg", tmpbgpic, 0, 0);
1195                                                        tmpstr = ostrcat(tmpstr, ".jpg", 1, 0);
1196                                                        changepic(tmcbg, tmpstr);
1197                                                        free(tmpstr); tmpstr = NULL;
1198                                                }
1199                                                else
1200                                                        changepic(tmcbg, NULL);
1201
1202                                                drawscreen(tmcbg, 0, 1);
1203                                                free(tmcpictitlebg); tmcpictitlebg = savescreen(tmcpictitle);
1204                                                free(tmcpicstarbg); tmcpicstarbg = savescreen(tmcpicstar);
1205                                                free(tmcstatusbg); tmcstatusbg = savescreen(tmcstatus);
1206                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1207                                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1208                                        }
1209                                }
1210                                else if(ostrcmp("Picture", tmcmenutxt->ret) == 0) //mainmenu picture
1211                                {
1212                                        menuid = 2;
1213                                        mediadbfilterpos = NULL;
1214                                        mediadbfiltercount = createmediadbfilter(2, NULL, 0);
1215                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1216                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1217                                }
1218                                else if(menuid == 2 && ostrcmp("Category", tmcmenutxt->ret) == 0)
1219                                {
1220                                        tmpstr = screentmccategory(2, ".category");
1221                                        if(tmpstr != NULL)
1222                                        {
1223                                                mediadbfilterpos = NULL;
1224                                                mediadbfiltercount = createmediadbfilter(2, tmpstr, 4);
1225                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1226                                        }
1227                                        free(tmpstr); tmpstr = NULL;
1228                                }
1229                                else if(menuid == 2 && ostrcmp("A-Z", tmcmenutxt->ret) == 0)
1230                                {
1231                                        tmpstr = screentmccategory(2, ".az");
1232                                        if(tmpstr != NULL)
1233                                        {
1234                                                mediadbfilterpos = NULL;
1235                                                mediadbfiltercount = createmediadbfilter(2, tmpstr, 7);
1236                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1237                                        }
1238                                        free(tmpstr); tmpstr = NULL;
1239                                }
1240                                else if(menuid == 2 && ostrcmp("All", tmcmenutxt->ret) == 0)
1241                                {
1242                                        mediadbfilterpos = NULL;
1243                                        mediadbfiltercount = createmediadbfilter(2, NULL, 0);
1244                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1245                                }
1246                                else if(menuid == 2 && ostrcmp("Random", tmcmenutxt->ret) == 0)
1247                                {
1248                                        if(picplaytype == 2)
1249                                                picplaytype = 0;
1250                                        else
1251                                                picplaytype = 2;
1252                                       
1253                                        tmcsetbutton(picplaytype, audioplaytype);
1254                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1255                                }
1256                                else if(menuid == 2 && ostrcmp("Single", tmcmenutxt->ret) == 0)
1257                                {
1258                                        if(picplaytype == 1)
1259                                                picplaytype = 0;
1260                                        else
1261                                                picplaytype = 1;
1262                                               
1263                                        tmcsetbutton(picplaytype, audioplaytype);
1264                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1265                                }
1266                                else if(ostrcmp("Video", tmcmenutxt->ret) == 0) //mainmenu video
1267                                {
1268                                        menuid = 3;
1269                                        mediadbfilterpos = NULL;
1270                                        mediadbfiltercount = createmediadbfilter(0, NULL, 0);
1271                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1272                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1273                                }
1274                                else if(menuid == 3 && ostrcmp("Genre", tmcmenutxt->ret) == 0)
1275                                {
1276                                        tmpstr = screentmccategory(0, ".genre");
1277                                        if(tmpstr != NULL)
1278                                        {
1279                                                mediadbfilterpos = NULL;
1280                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 6);
1281                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1282                                        }
1283                                        free(tmpstr); tmpstr = NULL;
1284                                }
1285                                else if(menuid == 3 && ostrcmp("Category", tmcmenutxt->ret) == 0)
1286                                {
1287                                        tmpstr = screentmccategory(0, ".category");
1288                                        if(tmpstr != NULL)
1289                                        {
1290                                                mediadbfilterpos = NULL;
1291                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 4);
1292                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1293                                        }
1294                                        free(tmpstr); tmpstr = NULL;
1295                                }
1296                                else if(menuid == 3 && ostrcmp("A-Z", tmcmenutxt->ret) == 0)
1297                                {
1298                                        tmpstr = screentmccategory(0, ".az");
1299                                        if(tmpstr != NULL)
1300                                        {
1301                                                mediadbfilterpos = NULL;
1302                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 7);
1303                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1304                                        }
1305                                        free(tmpstr); tmpstr = NULL;
1306                                }
1307                                else if(menuid == 3 && ostrcmp("All", tmcmenutxt->ret) == 0)
1308                                {
1309                                        mediadbfilterpos = NULL;
1310                                        mediadbfiltercount = createmediadbfilter(0, NULL, 0);
1311                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1312                                }
1313                                else if(menuid == 3 && ostrcmp("Year", tmcmenutxt->ret) == 0)
1314                                {
1315                                        tmpstr = screentmccategory(0, ".year");
1316                                        if(tmpstr != NULL)
1317                                        {
1318                                                mediadbfilterpos = NULL;
1319                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 1);
1320                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1321                                        }
1322                                        free(tmpstr); tmpstr = NULL;
1323                                }
1324                                else if(menuid == 3 && ostrcmp("Director", tmcmenutxt->ret) == 0)
1325                                {
1326                                        tmpstr = screentmccategory(0, ".director");
1327                                        if(tmpstr != NULL)
1328                                        {
1329                                                mediadbfilterpos = NULL;
1330                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 2);
1331                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1332                                        }
1333                                        free(tmpstr); tmpstr = NULL;
1334                                }
1335                                else if(menuid == 3 && ostrcmp("Actors", tmcmenutxt->ret) == 0)
1336                                {
1337                                        tmpstr = screentmccategory(0, ".actors");
1338                                        if(tmpstr != NULL)
1339                                        {
1340                                                mediadbfilterpos = NULL;
1341                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 3);
1342                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1343                                        }
1344                                        free(tmpstr); tmpstr = NULL;
1345                                }
1346                                else if(menuid == 3 && ostrcmp("Rating", tmcmenutxt->ret) == 0)
1347                                {
1348                                        tmpstr = screentmccategory(0, ".rating");
1349                                        if(tmpstr != NULL)
1350                                        {
1351                                                mediadbfilterpos = NULL;
1352                                                mediadbfiltercount = createmediadbfilter(0, tmpstr, 5);
1353                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1354                                        }
1355                                        free(tmpstr); tmpstr = NULL;
1356                                }
1357                                else if(menuid == 3 && ostrcmp("No IMDB", tmcmenutxt->ret) == 0)
1358                                {
1359                                        mediadbfilterpos = NULL;
1360                                        mediadbfiltercount = createmediadbfilter(0, tmpstr, 8);
1361                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1362                                }
1363                                else if(ostrcmp("Audio", tmcmenutxt->ret) == 0) //mainmenu audio
1364                                {
1365                                        menuid = 4;
1366                                        mediadbfilterpos = NULL;
1367                                        mediadbfiltercount = createmediadbfilter(1, NULL, 0);
1368                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1369                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1370                                }
1371                                else if(menuid == 4 && ostrcmp("Category", tmcmenutxt->ret) == 0)
1372                                {
1373                                        tmpstr = screentmccategory(1, ".category");
1374                                        if(tmpstr != NULL)
1375                                        {
1376                                                mediadbfilterpos = NULL;
1377                                                mediadbfiltercount = createmediadbfilter(1, tmpstr, 4);
1378                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1379                                        }
1380                                        free(tmpstr); tmpstr = NULL;
1381                                }
1382                                else if(menuid == 4 && ostrcmp("Genre", tmcmenutxt->ret) == 0)
1383                                {
1384                                        tmpstr = screentmccategory(1, ".genre");
1385                                        if(tmpstr != NULL)
1386                                        {
1387                                                mediadbfilterpos = NULL;
1388                                                mediadbfiltercount = createmediadbfilter(1, tmpstr, 6);
1389                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1390                                        }
1391                                        free(tmpstr); tmpstr = NULL;
1392                                }
1393        else if(menuid == 4 && ostrcmp("Year", tmcmenutxt->ret) == 0)
1394                                {
1395                                        tmpstr = screentmccategory(1, ".year");
1396                                        if(tmpstr != NULL)
1397                                        {
1398                                                mediadbfilterpos = NULL;
1399                                                mediadbfiltercount = createmediadbfilter(1, tmpstr, 1);
1400                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1401                                        }
1402                                        free(tmpstr); tmpstr = NULL;
1403                                }
1404        else if(menuid == 4 && ostrcmp("Actors", tmcmenutxt->ret) == 0)
1405                                {
1406                                        tmpstr = screentmccategory(1, ".actors");
1407                                        if(tmpstr != NULL)
1408                                        {
1409                                                mediadbfilterpos = NULL;
1410                                                mediadbfiltercount = createmediadbfilter(1, tmpstr, 3);
1411                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1412                                        }
1413                                        free(tmpstr); tmpstr = NULL;
1414                                }
1415                                else if(menuid == 4 && ostrcmp("A-Z", tmcmenutxt->ret) == 0)
1416                                {
1417                                        tmpstr = screentmccategory(1, ".az");
1418                                        if(tmpstr != NULL)
1419                                        {
1420                                                mediadbfilterpos = NULL;
1421                                                mediadbfiltercount = createmediadbfilter(1, tmpstr, 7);
1422                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1423                                        }
1424                                        free(tmpstr); tmpstr = NULL;
1425                                }
1426                                else if(menuid == 4 && ostrcmp("All", tmcmenutxt->ret) == 0)
1427                                {
1428                                        mediadbfilterpos = NULL;
1429                                        mediadbfiltercount = createmediadbfilter(1, NULL, 0);
1430                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1431                                }
1432                                else if(menuid == 4 && ostrcmp("Random", tmcmenutxt->ret) == 0)
1433                                {
1434                                        if(audioplaytype == 2)
1435                                                audioplaytype = 0;
1436                                        else
1437                                                audioplaytype = 2;
1438                                               
1439                                        tmcsetbutton(picplaytype, audioplaytype);
1440                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1441                                }
1442                                else if(menuid == 4 && ostrcmp("Single", tmcmenutxt->ret) == 0)
1443                                {
1444                                        if(audioplaytype == 1)
1445                                                audioplaytype = 0;
1446                                        else
1447                                                audioplaytype = 1;
1448                                               
1449                                        tmcsetbutton(picplaytype, audioplaytype);
1450                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1451                                }
1452                                else if(ostrcmp("Playlist", tmcmenutxt->ret) == 0) //playlist
1453                                {
1454                                        int playlistret = 0;
1455                                        struct mainplaylist* mplaylist = NULL;
1456
1457                                        mplaylist = screentmcplaylist(1);
1458                                        if(mplaylist != NULL)
1459                                        {
1460                                                struct playlist* plist = mplaylist->playlist;
1461                                                drawscreen(skin, 0, 0);
1462                                                if(servicestop(status.aktservice, 1, 1) == 0)
1463                                                {
1464                                                        while(plist != NULL)
1465                                                        {
1466                                                                //TODO: play playlist
1467                                                                playlistret = screenplay(plist->file, NULL, 0, 0);
1468                                                                if(playlistret == 1 || playlistret == 2) break;
1469
1470                                                                if(playlistplaytype == 2) //random
1471                                                                        plist = getplaylistrandom(mplaylist->playlist, getplaylistmax(mplaylist->playlist));
1472                                                                else //next
1473                                                                        plist = plist->next;
1474                                                        }
1475
1476                                                        playstartservice();
1477                                                }
1478
1479                                                drawscreen(tmcbg, 0, 1);
1480                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1481                                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1482                                        }
1483                                }
1484                                else if(ostrcmp("Play", tmcmenutxt->ret) == 0) //directory play
1485                                {
1486                                        char* file = screentmcdirplay();
1487
1488                                        if(file != NULL)
1489                                        {
1490                                                drawscreen(skin, 0, 0);
1491                                                screenplay(file, NULL, 0, 0);
1492
1493                                                free(file); file = NULL;
1494                                                drawscreen(tmcbg, 0, 1);
1495                                                tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1496                                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1497                                        }
1498                                }
1499
1500                                continue;
1501                        }
1502                       
1503                        if(active == 0 && tmcpic3->ret != NULL)
1504                        {
1505                                if(menuid == 3) //video
1506                                {
1507                                        drawscreen(skin, 0, 0);
1508
1509                                        screenplay(tmcpic3->ret, NULL, 0, 0);
1510
1511                                        drawscreen(tmcbg, 0, 1);
1512                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1513                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1514                                }
1515                                if(menuid == 4) //audio
1516                                {
1517                                        int audioret = 0;
1518                                        struct mediadbfilter* mfilter = NULL;
1519
1520                                        drawscreen(skin, 0, 0);
1521                                        mfilter = mediadbfilterpos;
1522
1523                                        if(servicestop(status.aktservice, 1, 1) == 0)
1524                                        {
1525                                                while(mfilter != NULL && mediadbfilter != NULL)
1526                                                {
1527                                                        if(mfilter->node != NULL)
1528                                                        {
1529                                                                char* tmpfile = ostrcat(mfilter->node->path, "/", 0, 0);
1530                                                                tmpfile = ostrcat(tmpfile, mfilter->node->file, 1, 0);
1531                                                                tmpfile = addmountpart(tmpfile, 1);
1532                                                                audioret = screenplay(tmpfile, NULL, 0, 3);
1533                                                                free(tmpfile); tmpfile = NULL;
1534                                                                mediadbfilterpos = mfilter;
1535                                                        }
1536                                                        if(audioret == 1 || audioret == 2) break;
1537
1538                                                        if(audioplaytype == 1) //single
1539                                                                break;
1540                                                        else if(audioplaytype == 2) //random
1541                                                                mfilter = getmediadbfilterrandom(getmediadbfiltercount());
1542                                                        else //next
1543                                                                mfilter = mfilter->next;
1544
1545                                                        if(mfilter == NULL) mfilter = mediadbfilter;
1546                                                }
1547
1548                                                playstartservice();
1549                                        }
1550
1551                                        drawscreen(tmcbg, 0, 1);
1552                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1553                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1554                                }
1555                                else if(menuid == 2) //picture
1556                                {
1557                                        int picret = 0;
1558                                        struct mediadbfilter* mfilter = NULL;
1559
1560                                        drawscreen(skin, 0, 0);
1561                                        mfilter = mediadbfilterpos;
1562                                       
1563                                        while(mfilter != NULL && mediadbfilter != NULL)
1564                                        {
1565                                                if(mfilter->node != NULL)
1566                                                {
1567                                                        char* tmpfile = ostrcat(mfilter->node->path, "/", 0, 0);
1568                                                        tmpfile = ostrcat(tmpfile, mfilter->node->file, 1, 0);
1569                                                        tmpfile = addmountpart(tmpfile, 1);
1570                                                        picret = screentmcpicplay(tmpfile);
1571                                                        free(tmpfile); tmpfile = NULL;
1572                                                        mediadbfilterpos = mfilter;
1573                                                }
1574                                                if(picret == 1) break;
1575
1576                                                if(picplaytype == 1) //single
1577                                                        break;
1578                                                else if(picplaytype == 2) //random
1579                                                        mfilter = getmediadbfilterrandom(getmediadbfiltercount());
1580                                                else //next
1581                                                        mfilter = mfilter->next;
1582
1583                                                if(mfilter == NULL) mfilter = mediadbfilter;
1584                                        }
1585
1586                                        drawscreen(tmcbg, 0, 1);
1587                                        tmcpicscroll(menuid, tmcpictitle, tmcpicstar, tmcstatus, tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, tmcpictitlebg, tmcpicstarbg, tmcstatusbg, 0);
1588                                        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu3p2, tmcmenu4, tmcmenu5, 0);
1589                                }
1590                        }
1591                }
1592        }
1593
1594        free(tmcpictitlebg); tmcpictitlebg = NULL;
1595        free(tmcpicstarbg); tmcpicstarbg = NULL;
1596        free(tmcstatusbg); tmcstatusbg = NULL;
1597        freemediadbfilter(0);
1598        if(status.mediadbthread == NULL)
1599        {
1600                if(status.writemediadb == 1)
1601                        writemediadb(getconfig("mediadbfile", NULL), NULL);
1602                freemediadb(0);
1603        }
1604        clearscreen(tmcbg);
1605        setosdtransparent(getskinconfigint("osdtransparent", NULL));
1606}
1607
1608#endif
Note: See TracBrowser for help on using the repository browser.