source: titan/titan/epgsearch.h @ 23993

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

[tita] fix

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                        tmp = NULL;
219                        genre = 1;
220                        delmarkedscreennodes(epgsearch, 1);
221                       
222                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
223                        if(tmp != NULL)
224                        {
225                                changetext(tmp, _("Action"));
226                                tmp->handle = "Action";
227                                tmp->handle1 = NULL;
228                        }
229                       
230                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
231                        if(tmp != NULL)
232                        {
233                                changetext(tmp, _("Animation"));
234                                tmp->handle = "Animation";
235                                tmp->handle1 = NULL;
236                        }
237                       
238                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
239                        if(tmp != NULL)
240                        {
241                                changetext(tmp, _("History"));
242                                tmp->handle = "History";
243                                tmp->handle1 = NULL;
244                        }
245                       
246                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
247                        if(tmp != NULL)
248                        {
249                                changetext(tmp, _("Doku"));
250                                tmp->handle = "Doku";
251                                tmp->handle1 = NULL;
252                        }
253                       
254                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
255                        if(tmp != NULL)
256                        {
257                                changetext(tmp, _("Thriller"));
258                                tmp->handle = "Thriller";
259                                tmp->handle1 = NULL;
260                        }
261                       
262                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
263                        if(tmp != NULL)
264                        {
265                                changetext(tmp, _("Child"));
266                                tmp->handle = "Child";
267                                tmp->handle1 = NULL;
268                        }
269                       
270                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
271                        if(tmp != NULL)
272                        {
273                                changetext(tmp, _("Fantasy"));
274                                tmp->handle = "Fantasy";
275                                tmp->handle1 = NULL;
276                        }
277                       
278                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
279                        if(tmp != NULL)
280                        {
281                                changetext(tmp, _("Horror"));
282                                tmp->handle = "Horror";
283                                tmp->handle1 = NULL;
284                        }
285                       
286                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
287                        if(tmp != NULL)
288                        {
289                                changetext(tmp, _("Comedy"));
290                                tmp->handle = "Comedy";
291                                tmp->handle1 = NULL;
292                        }
293                       
294                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
295                        if(tmp != NULL)
296                        {
297                                changetext(tmp, _("War"));
298                                tmp->handle = "War";
299                                tmp->handle1 = NULL;
300                        }
301                       
302                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
303                        if(tmp != NULL)
304                        {
305                                changetext(tmp, _("Scifi"));
306                                tmp->handle = "Scifi";
307                                tmp->handle1 = "Fiction";
308                        }
309                       
310                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
311                        if(tmp != NULL)
312                        {
313                                changetext(tmp, _("Sport"));
314                                tmp->handle = "Sport";
315                                tmp->handle1 = NULL;
316                        }
317                       
318                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
319                        if(tmp != NULL)
320                        {
321                                changetext(tmp, _("Western"));
322                                tmp->handle = "Western";
323                                tmp->handle1 = NULL;
324                        }
325                       
326                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
327                        if(tmp != NULL)
328                        {
329                                changetext(tmp, _("Eastern"));
330                                tmp->handle = "Eastern";
331                                tmp->handle1 = NULL;
332                        }
333                       
334                        tmp = addlistbox(epgsearch, listbox, tmp, 1);
335                        if(tmp != NULL)
336                        {
337                                changetext(tmp, _("Music"));
338                                tmp->handle = "Music";
339                                tmp->handle1 = NULL;
340                        }
341                       
342                        drawscreen(epgsearch, 0, 0);
343                        continue;
344                }
345 
346        }
347 
348        delmarkedscreennodes(epgsearch, 1);
349        delownerrc(epgsearch);
350        clearscreen(epgsearch);
351}
352
353#endif
Note: See TracBrowser for help on using the repository browser.