source: titan/titan/listedit.h @ 39797

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

add provider sort

File size: 4.4 KB
Line 
1#ifndef LISTEDIT_H
2#define LISTEDIT_H
3
4int screenlistedit(int list, struct channel* chnode, void* aktlist)
5{
6        int rcret = 0, ret = NOMODE, startchannel = 0;
7        struct skin* listedit = getscreen("listedit");
8        struct skin* listbox = getscreennode(listedit, "listbox");
9        struct skin* cpmode = getscreennode(listedit, "cpmode");
10        struct skin* rmmode = getscreennode(listedit, "rmmode");
11        struct skin* movemode = getscreennode(listedit, "movemode");
12        struct skin* protectmode = getscreennode(listedit, "protectmode");
13        struct skin* addmode = getscreennode(listedit, "addmode");
14        struct skin* editmode = getscreennode(listedit, "editmode");
15        struct skin* sortmode = getscreennode(listedit, "sortmode");
16        struct skin* setstartchannel = getscreennode(listedit, "setstartchannel");
17        struct skin* delstartchannel = getscreennode(listedit, "delstartchannel");
18        struct skin* load = getscreen("loading");
19        char* newentry = NULL, *tmpstr = NULL, *tmpnr = NULL;
20
21        listbox->aktline = 1;
22        listbox->aktpage = -1;
23
24        cpmode->hidden = NO;
25        rmmode->hidden = NO;
26        movemode->hidden = NO;
27        protectmode->hidden = NO;
28        addmode->hidden = YES;
29        editmode->hidden = YES;
30        sortmode->hidden = YES;
31        setstartchannel->hidden = YES;
32        delstartchannel->hidden = YES;
33
34        if(list == SATCHANNEL || list == PROVIDERCHANNEL || list == AZCHANNEL)
35                movemode->hidden = YES;
36        if(list == SATLIST || list == PROVIDERLIST || list == MAINBOUQUETLIST)
37        {
38                cpmode->hidden = YES;
39                protectmode->hidden = YES;
40        }
41        if(list == SATLIST || list == PROVIDERLIST)
42                cpmode->hidden = NO;
43        if(list == MAINBOUQUETLIST)
44        {
45                addmode->hidden = NO;
46                editmode->hidden = NO;
47        }
48
49        if(list == PROVIDERLIST)
50        {
51                sortmode->hidden = NO;
52        }
53
54        if(list == ALLCHANNEL || list == SATCHANNEL || list == PROVIDERCHANNEL || list == AZCHANNEL || list == BOUQUETCHANNEL)
55        {
56                if(chnode != NULL)
57                {
58                        startchannel = 1;
59                        setstartchannel->hidden = NO;
60                }
61                delstartchannel->hidden = NO;
62                editmode->hidden = NO;
63                sortmode->hidden = NO;
64        }
65
66        drawscreen(listedit, 0, 0);
67        addscreenrc(listedit, listbox);
68
69        while(1)
70        {
71                rcret = waitrc(listedit, 0, 0);
72       
73                if(rcret == getrcconfigint("rcexit", NULL)) break;
74                if(rcret == getrcconfigint("rcok", NULL) && listbox->select != NULL)
75                {
76                        if(ostrcmp(listbox->select->name, "movemode") == 0)
77                                ret = MVMODE;
78                        if(ostrcmp(listbox->select->name, "rmmode") == 0)
79                                ret = RMMODE;
80                        if(ostrcmp(listbox->select->name, "cpmode") == 0)
81                                ret = CPMODE;
82                        if(ostrcmp(listbox->select->name, "protectmode") == 0)
83                                ret = PROTECTMODE;
84                        if(ostrcmp(listbox->select->name, "editmode") == 0)
85                                ret = EDITMODE;
86                        if(ostrcmp(listbox->select->name, "addmode") == 0)
87                        {
88                                newentry = textinput(_("Bouquet Name"), "bouquet");
89                                if(newentry != NULL)
90                                {
91                                        newentry = stringreplacechar(newentry, '#', '_');
92                                        tmpstr = ostrcat(newentry, "#", 0, 0);
93                                        tmpnr = oitoa(status.servicetype);
94                                        tmpstr = ostrcat(tmpstr, tmpnr, 1, 0);
95                                        free(tmpnr); tmpnr = NULL;
96                                        tmpstr = ostrcat(tmpstr, "#", 1, 0);
97                                       
98                                        char* dname = realpath(getconfig("bouquetfile", NULL), NULL);
99                                        if(dname != NULL)
100                                        {
101                                                dname = dirname(dname);
102                                                tmpstr = ostrcat(tmpstr, dname, 1, 0);
103                                                free(dname); dname = NULL;
104
105                                                tmpstr = ostrcat(tmpstr, "/", 1, 0);
106                                                tmpstr = ostrcat(tmpstr, "bouquets.", 1, 0);
107                                                tmpstr = ostrcat(tmpstr, newentry, 1, 1);
108                                                addmainbouquet(tmpstr, 1, NULL);
109                                        }
110                                        free(tmpstr); tmpstr = NULL;
111                                }
112                        }
113                        if(startchannel == 1 && ostrcmp(listbox->select->name, "setstartchannel") == 0)
114                        {
115                                addconfig("startchannellist", getconfig("channellist", NULL));
116                                addconfigint("startserviceid", chnode->serviceid);
117                                addconfigllu("starttransponderid", chnode->transponderid);
118                                addconfig("startservicetype", getconfig("servicetype", NULL));
119                        }
120                        if(startchannel == 1 && ostrcmp(listbox->select->name, "delstartchannel") == 0)
121                        {
122                                delconfig("startchannellist");
123                                delconfig("startserviceid");
124                                delconfig("starttransponderid");
125                                delconfig("startservicetype");
126                        }
127                        if(ostrcmp(listbox->select->name, "sortmode") == 0)
128                        {
129                                drawscreen(load, 0, 0);
130                                if(list == BOUQUETCHANNEL)
131                                {
132                                        if(aktlist != NULL)
133                                        {
134                                                sortbouquet(&((struct mainbouquet*)aktlist)->bouquet);
135                                                recalcbouquetnr();
136                                        }
137                                }
138                                else if(list == PROVIDERLIST)
139                                        sortprovider();
140                                else
141                                        sortchannel();
142                                clearscreen(load);
143                        }
144                        break;
145                }
146        }
147
148        delownerrc(listedit);
149        clearscreen(listedit);
150
151        if(ret == NOMODE) status.moveblockcount = 0;
152        return ret;
153}
154
155#endif
Note: See TracBrowser for help on using the repository browser.