Changeset 16138 for titan/plugins/tmc


Ignore:
Timestamp:
05/29/12 19:50:19 (12 years ago)
Author:
nit
Message:

[titan] update tmc

Location:
titan/plugins/tmc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • titan/plugins/tmc/mediadb.h

    r15743 r16138  
    22#define MEDIADB_H
    33
     4struct mediadbfilter
     5{
     6        struct mediadb* node;
     7        struct mediadbfilter* prev;
     8        struct mediadbfilter* next;
     9};
     10
    411struct mediadb
    512{
    6         char* name;
     13        char* id;
     14        int type;
     15        char* title;
     16        char* year;
     17        char* released;
     18        char* runtime;
     19        char* genre;
     20        char* director;
     21        char* writer;
     22        char* actors;
     23        char* plot;
     24        char* poster;
     25        char* rating;
     26        char* votes;
    727        char* file;
    8         char* pic;
    928        struct mediadb* prev;
    1029        struct mediadb* next;
     
    1231
    1332struct mediadb *mediadb = NULL;
     33struct mediadbfilter *mediadbfilter = NULL;
     34
     35struct mediadbfilter* getlastmediadbfilter(struct mediadbfilter* node)
     36{
     37        debug(1000, "in");
     38        struct mediadbfilter *prev = NULL;
     39
     40        while(node != NULL)
     41        {
     42                prev = node;
     43                node = node->next;
     44        }
     45
     46        debug(1000, "out");
     47        return prev;
     48}
    1449
    1550struct mediadb* getlastmediadb(struct mediadb* node)
     
    120155}
    121156
    122 struct mediadb* addmediadb(char *line, int count, struct mediadb* last)
    123 {
    124         //debug(1000, "in");
    125         struct mediadb *newnode = NULL, *prev = NULL, *node = mediadb;
    126         char *name = NULL, *file = NULL, *pic = NULL;
    127         int ret = 0;
    128 
    129         if(line == NULL) return NULL;
    130 
    131         newnode = (struct mediadb*)malloc(sizeof(struct mediadb));     
     157struct mediadbfilter* addmediadbfilter(struct mediadb* mnode, int count, struct mediadbfilter* last)
     158{
     159        struct mediadbfilter *newnode = NULL, *prev = NULL, *node = mediadbfilter;
     160
     161        if(mnode == NULL) return NULL;
     162
     163        newnode = (struct mediadbfilter*)malloc(sizeof(struct mediadbfilter));
    132164        if(newnode == NULL)
    133165        {
     
    136168        }
    137169
    138         name = malloc(256);
    139         if(name == NULL)
    140         {
    141                 err("no memory");
    142                 free(newnode);
    143                 return NULL;
    144         }
    145         file = malloc(256);
    146         if(file == NULL)
    147         {
    148                 err("no memory");
    149                 free(name);
    150                 free(newnode);
    151                 return NULL;
    152         }
    153         pic = malloc(256);
    154         if(pic == NULL)
    155         {
    156                 err("no memory");
    157                 free(file);
    158                 free(name);
    159                 free(newnode);
    160                 return NULL;
    161         }
    162 
    163         memset(newnode, 0, sizeof(struct mediadb));
    164 
    165         //ret = sscanf(line, "%[^#]#%lu#%d#%d#%d#%"SCNu8"#%"SCNu8"#%"SCNu8"#%"SCNu16"#%"SCNu16"#%"SCNu8, name, &newnode->transponderid, &newnode->providerid, &newnode->serviceid, &newnode->servicetype, &newnode->flag, &newnode->videocodec, &newnode->audiocodec, &newnode->videopid, &newnode->audiopid, &newnode->protect);
    166         ret = sscanf(line, "%[^#]#%[^#]#%[^#]", name, file, pic);
    167         if(ret != 3)
    168         {
    169                 if(count > 0)
    170                 {
    171                         err("mediadb line %d not ok or double", count);
    172                 }
    173                 else
    174                 {
    175                         err("add mediadb");
    176                 }
    177                 free(pic);
    178                 free(file);
    179                 free(name);
    180                 free(newnode);
    181                 return NULL;
    182         }
    183 
    184         newnode->name = ostrcat(name, "", 1, 0);
    185         newnode->file = ostrcat(file, "", 1, 0);
    186         newnode->pic = ostrcat(pic, "", 1, 0);
    187 
    188         //modifymediadbcache(newnode->serviceid, newnode->transponderid, newnode);
     170        memset(newnode, 0, sizeof(struct mediadbfilter));
     171
     172        newnode->node = mnode;
    189173
    190174        if(last == NULL)
    191175        {
    192                 while(node != NULL && strcasecmp(newnode->name, node->name) > 0)
     176                while(node != NULL && strcasecmp(newnode->node->title, node->node->title) > 0)
    193177                {
    194178                        prev = node;
     
    203187
    204188        if(prev == NULL)
    205                 mediadb = newnode;
     189                mediadbfilter = newnode;
    206190        else
    207191        {
     
    216200}
    217201
    218 struct mediadb* createmediadb(char* name, unsigned long transponderid, int providerid, int serviceid, int servicetype, int flag, int videocodec, int audiocodec, int videopid, int audiopid, int protect)
     202struct mediadb* addmediadb(char *line, int count, struct mediadb* last)
     203{
     204        //debug(1000, "in");
     205        struct mediadb *newnode = NULL, *prev = NULL, *node = mediadb;
     206        char *id = NULL, *title = NULL, *year = NULL, *released = NULL;
     207        char *runtime = NULL, *genre = NULL, *director = NULL, *writer = NULL;
     208        char *actors = NULL, *plot = NULL, *poster = NULL, *rating = NULL;
     209        char *votes = NULL, *file = NULL;
     210        int ret = 0;
     211
     212        if(line == NULL) return NULL;
     213
     214        newnode = (struct mediadb*)malloc(sizeof(struct mediadb));
     215        if(newnode == NULL)
     216        {
     217                err("no memory");
     218                return NULL;
     219        }
     220
     221        id = malloc(256);
     222        if(id == NULL)
     223        {
     224                err("no memory");
     225                free(newnode);
     226                return NULL;
     227        }
     228        title = malloc(256);
     229        if(title == NULL)
     230        {
     231                err("no memory");
     232                freemediadbcontent(newnode);
     233                free(newnode);
     234                return NULL;
     235        }
     236        year = malloc(256);
     237        if(year == NULL)
     238        {
     239                err("no memory");
     240                freemediadbcontent(newnode);
     241                free(newnode);
     242                return NULL;
     243        }
     244        released = malloc(256);
     245        if(released == NULL)
     246        {
     247                err("no memory");
     248                freemediadbcontent(newnode);
     249                free(newnode);
     250                return NULL;
     251        }
     252        runtime = malloc(256);
     253        if(runtime == NULL)
     254        {
     255                err("no memory");
     256                freemediadbcontent(newnode);
     257                free(newnode);
     258                return NULL;
     259        }
     260        genre = malloc(256);
     261        if(genre == NULL)
     262        {
     263                err("no memory");
     264                freemediadbcontent(newnode);
     265                free(newnode);
     266                return NULL;
     267        }
     268        director = malloc(256);
     269        if(director == NULL)
     270        {
     271                err("no memory");
     272                freemediadbcontent(newnode);
     273                free(newnode);
     274                return NULL;
     275        }
     276        writer = malloc(256);
     277        if(writer == NULL)
     278        {
     279                err("no memory");
     280                freemediadbcontent(newnode);
     281                free(newnode);
     282                return NULL;
     283        }
     284        actors = malloc(256);
     285        if(actors == NULL)
     286        {
     287                err("no memory");
     288                freemediadbcontent(newnode);
     289                free(newnode);
     290                return NULL;
     291        }
     292        plot = malloc(256);
     293        if(plot == NULL)
     294        {
     295                err("no memory");
     296                freemediadbcontent(newnode);
     297                free(newnode);
     298                return NULL;
     299        }
     300        poster = malloc(256);
     301        if(poster == NULL)
     302        {
     303                err("no memory");
     304                freemediadbcontent(newnode);
     305                free(newnode);
     306                return NULL;
     307        }
     308        rating = malloc(256);
     309        if(rating == NULL)
     310        {
     311                err("no memory");
     312                freemediadbcontent(newnode);
     313                free(newnode);
     314                return NULL;
     315        }
     316        votes = malloc(256);
     317        if(votes == NULL)
     318        {
     319                err("no memory");
     320                freemediadbcontent(newnode);
     321                free(newnode);
     322                return NULL;
     323        }
     324        file = malloc(256);
     325        if(file == NULL)
     326        {
     327                err("no memory");
     328                freemediadbcontent(newnode);
     329                free(newnode);
     330                return NULL;
     331        }
     332
     333        memset(newnode, 0, sizeof(struct mediadb));
     334
     335        ret = sscanf(line, "%[^#]#%d#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%[^#]", id, &newnode->type, title, year, released, runtime, genre, director, writer, actors, plot, poster, rating, votes, file);
     336        if(ret != 15)
     337        {
     338                if(count > 0)
     339                {
     340                        err("mediadb line %d not ok or double", count);
     341                }
     342                else
     343                {
     344                        err("add mediadb");
     345                }
     346                freemediadbcontent(newnode);
     347                free(newnode);
     348                return NULL;
     349        }
     350
     351        newnode->id = ostrcat(id, NULL, 1, 0);
     352        newnode->title = ostrcat(title, NULL, 1, 0);
     353        newnode->year = ostrcat(year, NULL, 1, 0);
     354        newnode->released = ostrcat(released, NULL, 1, 0);
     355        newnode->runtime = ostrcat(runtime, NULL, 1, 0);
     356        newnode->genre = ostrcat(genre, NULL, 1, 0);
     357        newnode->director = ostrcat(director, NULL, 1, 0);
     358        newnode->writer = ostrcat(writer, NULL, 1, 0);
     359        newnode->actors = ostrcat(actors, NULL, 1, 0);
     360        newnode->plot = ostrcat(plot, NULL, 1, 0);
     361        newnode->poster = ostrcat(poster, NULL, 1, 0);
     362        newnode->rating = ostrcat(rating, NULL, 1, 0);
     363        newnode->votes = ostrcat(votes, NULL, 1, 0);
     364        newnode->file = ostrcat(file, NULL, 1, 0);
     365
     366        //modifymediadbcache(newnode->serviceid, newnode->transponderid, newnode);
     367
     368        if(last == NULL)
     369        {
     370                while(node != NULL)
     371                {
     372                        prev = node;
     373                        node = node->next;
     374                }
     375        }
     376        else
     377        {
     378                prev = last;
     379                node = last->next;
     380        }
     381
     382        if(prev == NULL)
     383                mediadb = newnode;
     384        else
     385        {
     386                prev->next = newnode;
     387                newnode->prev = prev;
     388        }
     389        newnode->next = node;
     390        if(node != NULL) node->prev = newnode;
     391       
     392        //debug(1000, "out");
     393        return newnode;
     394}
     395
     396struct mediadb* createmediadb(char* id, int type, char* title, char* year, char* released, char* runtime, char* genre, char* director, char* writer, char* actors, char* plot, char* poster, char* rating, char* votes, char* file)
    219397{
    220398        struct mediadb* mnode = NULL;
    221399        char* tmpstr = NULL;
    222400
    223         tmpstr = ostrcat(tmpstr, name, 1, 0);
    224         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    225         tmpstr = ostrcat(tmpstr, olutoa(transponderid), 1, 1);
    226         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    227         tmpstr = ostrcat(tmpstr, oitoa(providerid), 1, 1);
    228         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    229         tmpstr = ostrcat(tmpstr, oitoa(serviceid), 1, 1);
    230         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    231         tmpstr = ostrcat(tmpstr, oitoa(servicetype), 1, 1);
    232         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    233         tmpstr = ostrcat(tmpstr, oitoa(flag), 1, 1);
    234         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    235         tmpstr = ostrcat(tmpstr, oitoa(videocodec), 1, 1);
    236         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    237         tmpstr = ostrcat(tmpstr, oitoa(audiocodec), 1, 1);
    238         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    239         tmpstr = ostrcat(tmpstr, oitoa(videopid), 1, 1);
    240         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    241         tmpstr = ostrcat(tmpstr, oitoa(audiopid), 1, 1);
    242         tmpstr = ostrcat(tmpstr, "#", 1, 0);
    243         tmpstr = ostrcat(tmpstr, oitoa(protect), 1, 1);
     401        tmpstr = ostrcat(tmpstr, id, 1, 0);
     402        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     403        tmpstr = ostrcat(tmpstr, oitoa(type), 1, 1);
     404        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     405        tmpstr = ostrcat(tmpstr, title, 1, 0);
     406        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     407        tmpstr = ostrcat(tmpstr, year, 1, 0);
     408        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     409        tmpstr = ostrcat(tmpstr, released, 1, 0);
     410        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     411        tmpstr = ostrcat(tmpstr, runtime, 1, 0);
     412        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     413        tmpstr = ostrcat(tmpstr, genre, 1, 0);
     414        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     415        tmpstr = ostrcat(tmpstr, director, 1, 0);
     416        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     417        tmpstr = ostrcat(tmpstr, writer, 1, 0);
     418        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     419        tmpstr = ostrcat(tmpstr, actors, 1, 0);
     420        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     421        tmpstr = ostrcat(tmpstr, plot, 1, 0);
     422        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     423        tmpstr = ostrcat(tmpstr, poster, 1, 0);
     424        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     425        tmpstr = ostrcat(tmpstr, rating, 1, 0);
     426        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     427        tmpstr = ostrcat(tmpstr, votes, 1, 0);
     428        tmpstr = ostrcat(tmpstr, "#", 1, 0);
     429        tmpstr = ostrcat(tmpstr, file, 1, 0);
    244430
    245431        mnode = addmediadb(tmpstr, 1, NULL);
     
    292478        fclose(fd);
    293479        return 0;
     480}
     481
     482void freemediadbcontent(struct mediadb* node)
     483{
     484        if(node == NULL) return;
     485
     486        free(node->id); node->id = NULL;
     487        free(node->title); node->title = NULL;
     488        free(node->year); node->year = NULL;
     489        free(node->released); node->released = NULL;
     490        free(node->runtime); node->runtime = NULL;
     491        free(node->genre); node->genre = NULL;
     492        free(node->director); node->director = NULL;
     493        free(node->writer); node->writer = NULL;
     494        free(node->actors); node->actors = NULL;
     495        free(node->plot); node->plot = NULL;
     496        free(node->poster); node->poster = NULL;
     497        free(node->rating); node->rating = NULL;
     498        free(node->votes); node->votes = NULL;
     499        free(node->file); node->file = NULL;
     500}
     501
     502int delmediadbfilter(struct mediadbfilter* mnode, int flag)
     503{
     504        debug(1000, "in");
     505        int ret = 1;
     506        struct mediadbfilter *node = mediadbfilter, *prev = mediadbfilter;
     507
     508        while(node != NULL)
     509        {
     510                if(node == mnode)
     511                {
     512                        ret = 0;
     513                        if(node == mediadbfilter)
     514                        {
     515                                mediadbfilter = node->next;
     516                                if(mediadbfilter != NULL)
     517                                        mediadbfilter->prev = NULL;
     518                        }
     519                        else
     520                        {
     521                                prev->next = node->next;
     522                                if(node->next != NULL)
     523                                        node->next->prev = prev;
     524                        }
     525
     526                        free(node);
     527                        node = NULL;
     528
     529                        break;
     530                }
     531
     532                prev = node;
     533                node = node->next;
     534        }
     535
     536        debug(1000, "out");
     537        return ret;
    294538}
    295539
     
    319563
    320564                        //delmediadbcache(node->serviceid, node->transponderid);
    321 
    322                         free(node->name);
    323                         node->name = NULL;
     565                        freemediadbcontent(node);
    324566
    325567                        free(node);
     
    335577        debug(1000, "out");
    336578        return ret;
     579}
     580
     581void freemediadbfilter(int flag)
     582{
     583        debug(1000, "in");
     584        struct mediadbfilter *node = mediadbfilter, *prev = mediadbfilter;
     585
     586        while(node != NULL)
     587        {
     588                prev = node;
     589                node = node->next;
     590                if(prev != NULL)
     591                        delmediadbfilter(prev, flag);
     592        }
     593        debug(1000, "out");
    337594}
    338595
     
    368625        while(node != NULL)
    369626        {
    370                 ret = fprintf(fd, "%s#%s#%s\n", node->name, node->file, node->pic);
     627                ret = fprintf(fd, "%s#%d#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s\n", node->id, node->type, node->title, node->year, node->released, node->runtime, node->genre, node->director, node->writer, node->actors, node->plot, node->poster, node->rating, node->votes, node->file);
    371628                if(ret < 0)
    372629                {
     
    381638}
    382639
     640void createmediadbfilter(int type, int sort)
     641{
     642        struct mediadb* node = mediadb;
     643
     644        freemediadbfilter(0);
     645        while(node != NULL)
     646        {
     647                if(node->type == type)
     648                {
     649                        addmediadbfilter(node, 1, NULL);
     650                }
     651                node = node->next;
     652        }
     653}
     654
    383655#endif
  • titan/plugins/tmc/tmc.c

    r15934 r16138  
    22#include "../titan/debug.h"
    33#include "../titan/header.h"
     4#include "mediadb.h"
    45#include "tmc.h"
    56
  • titan/plugins/tmc/tmc.h

    r15978 r16138  
    22#define TMC_H
    33
     4struct mediadbfilter* mediadbfilterpos = NULL;
     5
     6//Mainmenu
    47int menu0pos = 0;
    5 char* menu0[] = {"skin/tmcsettings.png", "skin/tmcpicture.png", "skin/tmcvideo.png", "skin/tmcaudio.png", "skin/tmcbtn.png"};
    6 char* menu0txt[] = {"Settings", "Picture", "Video", "Audio", ""};
    7 
     8char* menu0[] = {"skin/tmcsettings.png", "skin/tmcpicture.png", "skin/tmcvideo.png", "skin/tmcaudio.png", "skin/tmcexit.png"};
     9char* menu0txt[] = {"Settings", "Picture", "Video", "Audio", "Exit"};
     10
     11//Settings
    812int menu1pos = 0;
    913char* menu1[] = {"skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png"};
    10 char* menu1txt[] = {"S1", "S2", "S3", "S4", "S5"};
    11 
     14char* menu1txt[] = {"", "", "", "", ""};
     15
     16//Picture
    1217int menu2pos = 0;
    13 char* menu2[] = {"skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png"};
    14 char* menu2txt[] = {"P1", "P2", "P3", "P4", "P5"};
    15 
     18char* menu2[] = {"skin/tmcsearch.png", "skin/tmccategory.png", "skin/tmcall.png", "skin/tmcrandom.png", "skin/tmcone.png", "skin/tmcback.png"};
     19char* menu2txt[] = {"Search", "Category", "All", "Random", "Single", "Back"};
     20
     21//Video
    1622int menu3pos = 0;
    17 char* menu3[] = {"skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png"};
    18 char* menu3txt[] = {"V1", "V2", "V3", "V4", "V5"};
    19 
     23char* menu3[] = {"skin/tmcsearch.png", "skin/tmccategory.png", "skin/tmcall.png", "skin/tmcback.png", "skin/tmcbtn.png"};
     24char* menu3txt[] = {"Search", "Category", "All", "Back", ""};
     25
     26//Audio
    2027int menu4pos = 0;
    21 char* menu4[] = {"skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png"};
    22 char* menu4txt[] = {"A1", "A2", "A3", "A4", "A5"};
     28char* menu4[] = {"skin/tmcsearch.png", "skin/tmccategory.png", "skin/tmcall.png", "skin/tmcrandom.png", "skin/tmcone.png", "skin/tmcback.png"};
     29char* menu4txt[] = {"Search", "Category", "All", "Random", "Single", "Back"};
     30
     31//Input
     32int menu5pos = 0;
     33char* menu5[] = {"skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png", "skin/tmcbtn.png"};
     34char* menu5txt[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"};
    2335
    2436//flag 0: draw only
     
    2739void tmcpicscroll(struct skin* tmcpic1, struct skin* tmcpic2, struct skin* tmcpic3, struct skin* tmcpic4, struct skin* tmcpic5, int flag)
    2840{
    29 /*
    30         int id = 0, max = 0;
    31         char** menu = NULL, **menutxt = NULL;
    32         int *menupos;
    33 
    34         if(menuid == 0)
    35         {
    36                 menu = menu0;
    37                 menutxt = menu0txt;
    38                 max = (sizeof(menu0) / sizeof(char*)) - 1;
    39                 menupos = &menu0pos;
    40         }
    41         else if(menuid == 1)
    42         {
    43                 menu = menu1;
    44                 menutxt = menu1txt;
    45                 max = (sizeof(menu1) / sizeof(char*)) - 1;
    46                 menupos = &menu1pos;
    47         }
    48         else if(menuid == 2)
    49         {
    50                 menu = menu2;
    51                 menutxt = menu2txt;
    52                 max = (sizeof(menu2) / sizeof(char*)) - 1;
    53                 menupos = &menu2pos;
    54         }
    55         else if(menuid == 3)
    56         {
    57                 menu = menu3;
    58                 menutxt = menu3txt;
    59                 max = (sizeof(menu3) / sizeof(char*)) - 1;
    60                 menupos = &menu3pos;
    61         }
    62         else if(menuid == 4)
    63         {
    64                 menu = menu4;
    65                 menutxt = menu4txt;
    66                 max = (sizeof(menu4) / sizeof(char*)) - 1;
    67                 menupos = &menu4pos;
    68         }
    69 
    70         if(flag == 1) (*menupos)++;
    71         if(flag == 2) (*menupos)--;
    72 
    73         if(*menupos < 0) *menupos = max;
    74         if(*menupos > max) *menupos = 0;
    75 
    76         id = *menupos;
    77 
    78         if(id > max) id = 0;
    79         changepic(tmcpic1, menu[id]);
    80         id++;
    81 
    82         if(id > max) id = 0;
    83         changepic(tmcpic2, menu[id]);
    84         id++;
    85 
    86         if(id > max) id = 0;
    87         changepic(tmcpic3, menu[id]);
    88         id++;
    89 
    90         if(id > max) id = 0;
    91         changepic(tmcpic4, menu[id]);
    92         id++;
    93 
    94         if(id > max) id = 0;
    95         changepic(tmcpic5, menu[id]);
     41        int count = 0;
     42        struct mediadbfilter* node = mediadbfilterpos;
     43        char* tmpstr = NULL;
     44
     45        while(1)
     46        {
     47                if(flag == 0 && count == 0)
     48                {
     49                        if(node == NULL) node = mediadbfilter;
     50                        mediadbfilterpos = node;
     51                }
     52                if(flag == 1 && count == 0)
     53                {
     54                        if(node == NULL) node = mediadbfilter;
     55                        if(node != NULL) node = node->next;
     56                        if(node == NULL) node = mediadbfilter;
     57                        mediadbfilterpos = node;
     58                }
     59                if(flag == 2 && count == 0)
     60                {
     61                        if(node == NULL) node = getlastmediadbfilter(mediadbfilter);
     62                        if(node != NULL) node = node->prev;
     63                        if(node == NULL) node = getlastmediadbfilter(mediadbfilter);
     64                        mediadbfilterpos = node;
     65                }
     66                if(count != 0)
     67                {
     68                        if(node == NULL) node = mediadbfilter;
     69                        if(node != NULL) node = node->next;
     70                        if(node == NULL) node = mediadbfilter;
     71                }
     72
     73                if(node != NULL && node->node != NULL)
     74                {
     75                        tmpstr = ostrcat(getconfig("imdb_directory", NULL), "/", 0, 0);
     76                        tmpstr = ostrcat(tmpstr, node->node->poster, 1, 0);
     77                        if(count == 0) changepic(tmcpic1, tmpstr);
     78                        if(count == 1) changepic(tmcpic2, tmpstr);
     79                        if(count == 2) changepic(tmcpic3, tmpstr);
     80                        if(count == 3) changepic(tmcpic4, tmpstr);
     81                        if(count == 4) changepic(tmcpic5, tmpstr);
     82                        free(tmpstr); tmpstr = NULL;
     83                }
     84                count++; if(count > 4) break;
     85        }
    9686
    9787        drawscreen(tmcpic1, 1);
     
    10090        drawscreen(tmcpic4, 1);
    10191        drawscreen(tmcpic5, 0);
    102 */
    10392}
    10493
     
    111100        char** menu = NULL, **menutxt = NULL;
    112101        int *menupos = 0;
    113   char* tmpstr = NULL;
     102        char* tmpstr = NULL;
    114103
    115104        if(menuid == 0)
     
    148137                menupos = &menu4pos;
    149138        }
     139  else if(menuid == 5)
     140        {
     141                menu = menu5;
     142                menutxt = menu5txt;
     143                max = (sizeof(menu5) / sizeof(char*)) - 1;
     144                menupos = &menu5pos;
     145        }
    150146
    151147        if(flag == 1) (*menupos)++;
     
    158154
    159155        if(id > max) id = 0;
    160   tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
     156        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
    161157        changepic(tmcmenu1, tmpstr);
    162   free(tmpstr); tmpstr = NULL;
     158        free(tmpstr); tmpstr = NULL;
     159  if(menuid == 5)
     160    changetext(tmcmenu1, menutxt[id]);
     161  else
     162    changetext(tmcmenu1, NULL);
    163163        id++;
    164164
    165165        if(id > max) id = 0;
    166   tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
     166        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
    167167        changepic(tmcmenu2, tmpstr);
    168   free(tmpstr); tmpstr = NULL;
     168        free(tmpstr); tmpstr = NULL;
     169  if(menuid == 5)
     170    changetext(tmcmenu2, menutxt[id]);
     171  else
     172    changetext(tmcmenu2, NULL);
    169173        id++;
    170174
    171175        if(id > max) id = 0;
    172   tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
     176        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
    173177        changepic(tmcmenu3, tmpstr);
    174   free(tmpstr); tmpstr = NULL;
    175         changetext(tmcmenutxt, _(menutxt[id]));
    176         changename(tmcmenutxt, menutxt[id]);
     178        free(tmpstr); tmpstr = NULL;
     179  if(menuid == 5)
     180    changetext(tmcmenu3, menutxt[id]);
     181  else
     182  {
     183    changetext(tmcmenu3, NULL);
     184    changetext(tmcmenutxt, _(menutxt[id]));
     185    changename(tmcmenutxt, menutxt[id]);
     186  }
    177187        id++;
    178188
    179189        if(id > max) id = 0;
    180   tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
     190        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
    181191        changepic(tmcmenu4, tmpstr);
    182   free(tmpstr); tmpstr = NULL;
     192        free(tmpstr); tmpstr = NULL;
     193  if(menuid == 5)
     194    changetext(tmcmenu4, menutxt[id]);
     195  else
     196    changetext(tmcmenu4, NULL);
    183197        id++;
    184198
    185199        if(id > max) id = 0;
    186   tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
     200        tmpstr = ostrcat("%pluginpath%/tmc/", menu[id], 0, 0);
    187201        changepic(tmcmenu5, tmpstr);
    188   free(tmpstr); tmpstr = NULL;
     202        free(tmpstr); tmpstr = NULL;
     203  if(menuid == 5)
     204    changetext(tmcmenu5, menutxt[id]);
     205  else
     206    changetext(tmcmenu5, NULL);
    189207
    190208        if(active == 1)
     
    215233void screentmcmenu()
    216234{
    217         int rcret = 0, menuid = 0, active = 1;
     235        int rcret = 0, menuid = 0, oldmenuid = 0, active = 1;
    218236        struct skin* tmcbg = getscreen("tmcbg");
    219237        struct skin* tmcmenutxt = getscreen("tmcmenutxt");
     
    229247        struct skin* tmcpic5 = getscreen("tmcpic5");
    230248
     249  mediadbfilterpos = NULL;
    231250        menu0pos = 0;
    232251        menu1pos = 0;
     
    243262        tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu4, tmcmenu5, 0);
    244263
     264        readmediadb(getconfig("mediadbfile", NULL));
     265
    245266        while(1)
    246267        {
    247268                rcret = waitrc(NULL, 0, 0);
    248269
    249                 if(rcret == getrcconfigint("rcmenu", NULL))
     270                if(menuid != 0 && rcret == getrcconfigint("rcmenu", NULL))
    250271                {
    251272                        if(active == 1)
     
    263284                        {
    264285                                if(menuid == 0) break;
    265                                 else menuid = 0;
     286                                menuid = oldmenuid;
     287        oldmenuid = 0;
    266288
    267289                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu4, tmcmenu5, 0);
     
    275297                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu4, tmcmenu5, 1);
    276298                        else
    277                                 tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 0);
     299                                tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 1);
    278300                        continue;
    279301                }
     
    284306                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu4, tmcmenu5, 2);
    285307                        else
    286                                 tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 0);
     308                                tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 2);
    287309                        continue;
    288310                }
     
    292314                        if(active == 1)
    293315                        {
    294                                 if(ostrcmp("Settings", tmcmenutxt->name) == 0) menuid = 1;
    295                                 else if(ostrcmp("Picture", tmcmenutxt->name) == 0) menuid = 2;
    296                                 else if(ostrcmp("Video", tmcmenutxt->name) == 0) menuid = 3;
    297                                 else if(ostrcmp("Audio", tmcmenutxt->name) == 0) menuid = 4;
     316        if(ostrcmp("Exit", tmcmenutxt->name) == 0)
     317          break;
     318                                if(ostrcmp("Settings", tmcmenutxt->name) == 0)
     319                                {
     320                                        menuid = 1;
     321                                }
     322        if(ostrcmp("Search", tmcmenutxt->name) == 0)
     323        {
     324          oldmenuid = menuid;
     325          menuid = 5;
     326        }
     327        if(ostrcmp("Back", tmcmenutxt->name) == 0)
     328        {
     329          menuid = oldmenuid;
     330          oldmenuid = 0;
     331        }
     332                                else if(ostrcmp("Picture", tmcmenutxt->name) == 0)
     333                                {
     334                                        menuid = 2;
     335                                        mediadbfilterpos = NULL;
     336                                        createmediadbfilter(2, 0);
     337                                        tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 0);
     338                                }
     339                                else if(ostrcmp("Video", tmcmenutxt->name) == 0)
     340                                {
     341                                        menuid = 3;
     342                                        mediadbfilterpos = NULL;
     343                                        createmediadbfilter(0, 0);
     344                                        tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 0);
     345                                }
     346                                else if(ostrcmp("Audio", tmcmenutxt->name) == 0)
     347                                {
     348                                        menuid = 4;
     349                                        mediadbfilterpos = NULL;
     350                                        createmediadbfilter(1, 0);
     351                                        tmcpicscroll(tmcpic1, tmcpic2, tmcpic3, tmcpic4, tmcpic5, 0);
     352                                }
    298353       
    299354                                tmcmenuscroll(menuid, active, tmcmenutxt, tmcmenu1, tmcmenu2, tmcmenu3, tmcmenu4, tmcmenu5, 0);
     
    303358        }
    304359
     360        freemediadbfilter(0);
     361        freemediadb(0);
    305362        clearscreen(tmcbg);
    306363}
Note: See TracChangeset for help on using the changeset viewer.