source: titan/titan/epgsearch.h @ 23985

Last change on this file since 23985 was 23985, checked in by nit, 9 years ago

[titan] fix epgsearch

File size: 7.9 KB
Line 
1#ifndef EPGSEARCH_H
2#define EPGSEARCH_H
3
4int searchepg(char* search, char* search1, char* search2, int searchtype, struct skin* epgsearch, struct skin* listbox)
5{
6        int allepg = 1, count = 0;
7        char* result = NULL, *epgdesc = NULL, *tmpstr = NULL;
8        char* buf = NULL;
9        struct channel* chnode = channel;
10        struct epg* epgnode = NULL;
11        struct skin* tmp = NULL;
12        struct tm *loctime = NULL;
13        time_t akttime = time(NULL) + 10800;
14 
15        if(search == NULL || strlen(search) < 2) return 1;
16
17        listbox->aktline = 1;
18        listbox->aktpage = -1;
19
20        buf = malloc(MINMALLOC);
21        if(buf == NULL)
22        {
23                err("no mem");
24                return 1;
25        }
26       
27        if(textbox(_("Message"), _("Search only aktual epg ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
28                allepg = 0;
29
30        while(chnode != NULL)
31        {
32                epgnode = getepgakt(chnode);
33                while(epgnode != NULL)
34                {
35                        if(allepg == 0 && epgnode->starttime > akttime) break;
36               
37                        result = NULL;
38                        count = 0;
39                       
40start:
41                        if(searchtype == 0 || searchtype == 2 || searchtype == 3)
42                        {
43                                if(epgnode->title != NULL)
44                                        result = ostrstrcase(epgnode->title, search);
45                        }
46                        if(searchtype == 3 && result == NULL)
47                        {
48                                if(epgnode->subtitle != NULL)
49                                        result = ostrstrcase(epgnode->subtitle, search);
50                        }
51                        if((searchtype == 1 || searchtype == 2 || searchtype == 3) && result == NULL)
52                        {
53                                epgdesc = epgdescunzip(epgnode);
54                                if(epgdesc != NULL)
55                                {
56                                        result = ostrstrcase(epgdesc, search);
57                                        free(epgdesc); epgdesc = NULL;
58                                }
59                        }
60                       
61                        if(result == NULL && count == 0 && search1 != NULL && ostrcmp(search, search1) != 0)
62                        {
63                                count = 1;
64                                search = search1;
65                                goto start;
66                        }
67                       
68                        if(result == NULL && count == 1 && search2 != NULL)
69                        {
70                                count = 2;
71                                search = search2;
72                                goto start;
73                        }
74                       
75                        if(result != NULL)
76                        {
77                                tmp = addlistbox(epgsearch, listbox, tmp, 1);
78                                if(tmp != NULL)
79                                {
80                                        tmpstr = ostrcat(chnode->name, " - ", 0, 0);
81                                        changetext(tmp, tmpstr);
82                                        free(tmpstr); tmpstr = NULL;
83
84                                        tmpstr = ostrcat(tmpstr, epgnode->title, 1, 0);
85
86                                        loctime = olocaltime(&epgnode->starttime);
87                                        if(loctime != NULL)
88                                                strftime(buf, MINMALLOC, "%d-%m-%Y %H:%M -", loctime);
89                                        free(loctime); loctime = NULL;
90                                        loctime = olocaltime(&epgnode->endtime);
91                                        if(loctime != NULL)
92                                                strftime(&buf[18], MINMALLOC - 19, " %H:%M", loctime);
93                                        free(loctime); loctime = NULL;
94
95                                        tmpstr = ostrcat(tmpstr, " (", 1, 0);
96                                        tmpstr = ostrcat(tmpstr, buf, 1, 0);
97                                        tmpstr = ostrcat(tmpstr, ")", 1, 0);
98
99                                        changetext2(tmp, tmpstr);
100                                        free(tmpstr); tmpstr = NULL;
101                                        tmp->handle = (char*)chnode;
102                                        tmp->handle1 = (char*)epgnode;
103                                }       
104     
105                        }
106                        epgnode = epgnode->next;
107                }
108                chnode = chnode->next;
109        }
110
111        free(buf);
112        return 0;
113}
114
115void screenepgsearch(char* text)
116{
117        int rcret = -1, ret = 0, genre = 0;
118        struct skin* epgsearch = getscreen("epgsearch");
119        struct skin* listbox = getscreennode(epgsearch, "listbox");
120        char* search = NULL;
121        struct skin* tmp = NULL;
122
123        if(text != NULL)
124        {
125                delmarkedscreennodes(epgsearch, 1);
126                searchepg(text, NULL, NULL, 0, epgsearch, listbox);
127        }
128
129        listbox->aktline = 1;
130        listbox->aktpage = -1;
131 
132        addscreenrc(epgsearch, listbox);
133        drawscreen(epgsearch, 0, 0);
134 
135        while(1)
136        {
137                rcret = waitrc(epgsearch, 0, 0);
138   
139                if(rcret == getrcconfigint("rcexit", NULL)) break;
140                if(rcret == getrcconfigint("rcok", NULL))
141                {
142                        if(listbox->select != NULL)
143                        {
144                                if(genre == 0)
145                                        servicecheckret(servicestart((struct channel*)listbox->select->handle, NULL, NULL, 0), 0);
146                                else
147                                {
148                                        genre = 0;
149                                        char* s1 = ostrcat(listbox->select->text, NULL, 0, 0);
150                                        char* s2 = ostrcat(listbox->select->handle, NULL, 0, 0);
151                                        char* s3 = ostrcat(listbox->select->handle1, NULL, 0, 0);
152                                  delmarkedscreennodes(epgsearch, 1);
153                                  searchepg(s1, s2, s3, 3, epgsearch, listbox);
154                                  free(s1); s1 = NULL;
155                                  free(s2); s2 = NULL;
156                                  free(s3); s3 = NULL;
157                                  drawscreen(epgsearch, 0, 0);
158                                        continue;
159                                }
160                        }
161                        break;
162                }
163   
164                if(rcret == getrcconfigint("rcred", NULL))
165                {
166                        if(listbox->select != NULL && genre == 0)
167                        {
168                                ret = addrecepg((struct channel*)listbox->select->handle, (struct epg*)listbox->select->handle1, NULL);
169                                drawscreen(epgsearch, 0, 0);
170                                continue;
171                        }
172                }
173   
174                if(rcret == getrcconfigint("rcgreen", NULL))
175                {
176                        search = textinput("Search", NULL);
177                        if(search != NULL)
178                        {
179                                genre = 0;
180                                delmarkedscreennodes(epgsearch, 1);
181                                searchepg(search, NULL, NULL, 0, epgsearch, listbox);
182                                free(search); search = NULL;
183                        }
184                        drawscreen(epgsearch, 0, 0);
185                        continue;
186                }
187   
188                if(rcret == getrcconfigint("rcyellow", NULL))
189                {
190                        search = textinput("Search", NULL);
191                        if(search != NULL)
192                        {
193                                genre = 0;
194                                delmarkedscreennodes(epgsearch, 1);
195                                searchepg(search, NULL, NULL, 1, epgsearch, listbox);
196                                free(search); search = NULL;
197                        }
198                        drawscreen(epgsearch, 0, 0);
199                        continue;
200                }
201   
202                if(rcret == getrcconfigint("rcblue", NULL))
203                {
204                        search = textinput("Search", NULL);
205                        if(search != NULL)
206                        {
207                                genre = 0;
208                                delmarkedscreennodes(epgsearch, 1);
209                                searchepg(search, NULL, NULL, 2, epgsearch, listbox);
210                                free(search); search = NULL;
211                        }
212                        drawscreen(epgsearch, 0, 0);
213                        continue;
214                }
215               
216                if(rcret == getrcconfigint("rcmenu", NULL))
217                {
218                        genre = 1;
219                        delmarkedscreennodes(epgsearch, 1);
220                       
221                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
222                        if(tmp != NULL)
223                        {
224                                changetext(tmp, _("Action"));
225                                tmp->handle = "Action";
226                                tmp->handle1 = NULL;
227                        }
228                       
229                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
230                        if(tmp != NULL)
231                        {
232                                changetext(tmp, _("Animation"));
233                                tmp->handle = "Animation";
234                                tmp->handle1 = NULL;
235                        }
236                       
237                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
238                        if(tmp != NULL)
239                        {
240                                changetext(tmp, _("History"));
241                                tmp->handle = "History";
242                                tmp->handle1 = NULL;
243                        }
244                       
245                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
246                        if(tmp != NULL)
247                        {
248                                changetext(tmp, _("Doku"));
249                                tmp->handle = "Doku";
250                                tmp->handle1 = NULL;
251                        }
252                       
253                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
254                        if(tmp != NULL)
255                        {
256                                changetext(tmp, _("Thriller"));
257                                tmp->handle = "Thriller";
258                                tmp->handle1 = NULL;
259                        }
260                       
261                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
262                        if(tmp != NULL)
263                        {
264                                changetext(tmp, _("Child"));
265                                tmp->handle = "Child";
266                                tmp->handle1 = NULL;
267                        }
268                       
269                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
270                        if(tmp != NULL)
271                        {
272                                changetext(tmp, _("Fantasy"));
273                                tmp->handle = "Fantasy";
274                                tmp->handle1 = NULL;
275                        }
276                       
277                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
278                        if(tmp != NULL)
279                        {
280                                changetext(tmp, _("Horror"));
281                                tmp->handle = "Horror";
282                                tmp->handle1 = NULL;
283                        }
284                       
285                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
286                        if(tmp != NULL)
287                        {
288                                changetext(tmp, _("Comedy"));
289                                tmp->handle = "Comedy";
290                                tmp->handle1 = NULL;
291                        }
292                       
293                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
294                        if(tmp != NULL)
295                        {
296                                changetext(tmp, _("War"));
297                                tmp->handle = "War";
298                                tmp->handle1 = NULL;
299                        }
300                       
301                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
302                        if(tmp != NULL)
303                        {
304                                changetext(tmp, _("Scifi"));
305                                tmp->handle = "Scifi";
306                                tmp->handle1 = "Fiction";
307                        }
308                       
309                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
310                        if(tmp != NULL)
311                        {
312                                changetext(tmp, _("Sport"));
313                                tmp->handle = "Sport";
314                                tmp->handle1 = NULL;
315                        }
316                       
317                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
318                        if(tmp != NULL)
319                        {
320                                changetext(tmp, _("Western"));
321                                tmp->handle = "Western";
322                                tmp->handle1 = NULL;
323                        }
324                       
325                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
326                        if(tmp != NULL)
327                        {
328                                changetext(tmp, _("Eastern"));
329                                tmp->handle = "Eastern";
330                                tmp->handle1 = NULL;
331                        }
332                       
333                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
334                        if(tmp != NULL)
335                        {
336                                changetext(tmp, _("Music"));
337                                tmp->handle = "Music";
338                                tmp->handle1 = NULL;
339                        }
340                       
341                        drawscreen(epgsearch, 0, 0);
342                        continue;
343                }
344 
345        }
346 
347        delmarkedscreennodes(epgsearch, 1);
348        delownerrc(epgsearch);
349        clearscreen(epgsearch);
350}
351
352#endif
Note: See TracBrowser for help on using the repository browser.