source: titan/titan/menu.h @ 15272

Last change on this file since 15272 was 14804, checked in by nit, 12 years ago

[titan] add blindscan adjust screen

File size: 10.0 KB
Line 
1#ifndef MENU_H
2#define MENU_H
3
4//flag 1: fist call
5struct skin* menu(struct skin* menu, int flag)
6{
7        debug(1000, "in");
8        int rcret = 0, ret = 0;
9        struct skin* listbox = getscreennode(menu, "listbox");
10        struct skin* child = NULL;
11        char* tmpstr = NULL;
12
13        if(listbox == NULL || menu == NULL)
14        {
15                debug(1000, "out -> NULL detect");
16                return NULL;
17        }
18
19        //check for hidden menus
20        child = menu->child;
21        while(child != NULL)
22        {
23                if(child->type & MENU)
24                {       
25                        tmpstr = ostrcat("protect_", child->name, 0, 0);
26                       
27                        if(getconfigint(tmpstr, NULL) == 2)
28                                child->hidden = YES;   
29                        else
30                        {
31                                child->hidden = NO;     
32                                if(menucall(menu, child, 1) == 1)
33                                        child->hidden = YES;   
34                                else
35                                        child->hidden = NO;     
36                        }
37                               
38                        free(tmpstr); tmpstr = NULL;
39                }
40                child = child->next;
41        }
42
43        if(flag == 1)
44                drawscreen(menu, 4);
45        else
46                drawscreen(menu, 0);
47        addscreenrc(menu, listbox);
48        if(listbox->select != NULL)
49        {
50                status.updatevfd = PAUSE;
51                writevfd(listbox->select->text);
52        }
53
54        while(1)
55        {
56                rcret = waitrc(menu, 0, 0);
57
58                if(rcret == getrcconfigint("rcexit", NULL)) break;
59                if(rcret == getrcconfigint("rcmenu", NULL))
60                {
61                        status.menurelease = 1;
62                        break;
63                }
64
65                if(rcret == getrcconfigint("rcok", NULL))
66                {
67                        clearscreen(menu);
68                        ret = menucall(menu, listbox->select, 0);
69                        if(status.standby == 1 || status.menurelease == 1) break;
70
71                        if(ret != 0)
72                                textbox(_("Message"), _("Menu not implemented !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
73                        drawscreen(menu, 0);
74                }
75                if(listbox->select != NULL)
76                        writevfd(listbox->select->text);
77        }
78
79        delownerrc(menu);
80        clearscreen(menu);
81        debug(1000, "out");
82        return listbox->select;
83}
84
85int menucall(struct skin* menunode, struct skin* menuentry, int check)
86{
87        debug(1000, "in");
88        void (*startplugin) (void);
89        int ret = 0, pincheck = 0;
90        char* tmpstr = NULL;
91
92        if(menuentry == NULL)
93        {
94                debug(1000, "out -> NULL detect");
95                return 1;
96        }
97       
98        if(!(menuentry->type & MENU)) return 1;
99
100        debug(1000, "menuentry->name=%s", menuentry->name);
101
102        tmpstr = ostrcat("protect_", menuentry->name, 0, 0);
103        pincheck = getconfigint(tmpstr, 0);
104        free(tmpstr); tmpstr = NULL;
105        if(pincheck == 1 && check == 0)
106        {
107                pincheck = screenpincheck(2, NULL);
108                if(pincheck == 1)
109                        return 0;
110        }
111
112        if(ostrcmp("settings", menuentry->name) == 0)
113        {
114                if(check == 1) return 0;
115                struct skin* screen = getscreen("settingsmenu");
116                menu(screen, 0);
117        }
118        else if(ostrcmp("timermenu", menuentry->name) == 0)
119        {
120                if(check == 1) return 0;
121                struct skin* screen = getscreen("timermenu");
122                menu(screen, 0);
123        }
124        else if(ostrcmp("information", menuentry->name) == 0)
125        {
126                if(check == 1) return 0;
127                struct skin* screen = getscreen("infomenu");
128                menu(screen, 0);
129        }
130        else if(ostrcmp("channelservice", menuentry->name) == 0)
131        {
132                if(check == 1) return 0;
133                struct skin* screen = getscreen("channelmenu");
134                menu(screen, 0);
135        }
136        else if(ostrcmp("system", menuentry->name) == 0)
137        {
138                if(check == 1) return 0;
139                struct skin* screen = getscreen("systemmenu");
140                menu(screen, 0);
141        }
142        else if(ostrcmp("standby", menuentry->name) == 0)
143        {
144                if(check == 1) return 0;
145                struct skin* screen = getscreen("standbymenu");
146                menu(screen, 0);
147        }
148        else if(ostrcmp("harddisk", menuentry->name) == 0)
149        {
150                if(check == 1) return 0;
151                struct skin* screen = getscreen("harddiskmenu");
152                menu(screen, 0);
153        }
154        else if(ostrcmp("network", menuentry->name) == 0)
155        {
156                if(check == 1) return 0;
157                struct skin* screen = getscreen("networkmenu");
158                menu(screen, 0);
159        }
160        else if(ostrcmp("httpdsettings", menuentry->name) == 0)
161        {
162                if(check == 1) return 0;
163                screenhttpdsettings();
164        }
165        else if(ostrcmp("mediaplayer", menuentry->name) == 0)
166        {
167                if(check == 1) return 0;
168                screenplay(NULL, 0, 0);
169        }
170        else if(ostrcmp("restoredefault", menuentry->name) == 0)
171        {
172                if(check == 1) return 0;
173                screenrestoredefault();
174        }
175        else if(ostrcmp("singleepg", menuentry->name) == 0)
176        {
177                if(check == 1) return 0;
178                screensingleepg(NULL, NULL, 1);
179        }
180        else if(ostrcmp("multiepg", menuentry->name) == 0)
181        {
182                if(check == 1) return 0;
183                screenmultiepg(NULL, NULL, 1);
184        }
185        else if(ostrcmp("gmultiepg", menuentry->name) == 0)
186        {
187                if(check == 1) return 0;
188                screengmultiepg(NULL, NULL, 1);
189        }
190        else if(ostrcmp("formathdd", menuentry->name) == 0)
191        {
192                if(check == 1) return 0;
193                screenharddisk(0);
194        }
195        else if(ostrcmp("filesystemcheck", menuentry->name) == 0)
196        {
197                if(check == 1) return 0;
198                screenharddisk(1);
199        }
200        else if(ostrcmp("configurehdd", menuentry->name) == 0)
201        {
202                if(check == 1) return 0;
203                screenharddisk(2);
204        }
205        else if(ostrcmp("timetosleep", menuentry->name) == 0)
206        {
207                if(check == 1) return 0;
208                screenharddisksleep();
209        }
210        else if(ostrcmp("addaptersettings", menuentry->name) == 0)
211        {
212                if(check == 1) return 0;
213                screennetwork_adapter();
214        }
215        else if(ostrcmp("networktest", menuentry->name) == 0)
216        {
217                if(check == 1) return 0;
218                screennetwork_test();
219        }
220        else if(ostrcmp("networkrestart", menuentry->name) == 0)
221        {
222                if(check == 1) return 0;
223                screennetwork_restart(NULL);
224        }
225        else if(ostrcmp("sambasettings", menuentry->name) == 0)
226        {
227                if(check == 1) return 0;
228                screennetwork(5);
229        }
230        else if(ostrcmp("nfssettings", menuentry->name) == 0)
231        {
232                if(check == 1) return 0;
233                screennetwork(6);
234        }
235        else if(ostrcmp("poweroff", menuentry->name) == 0)
236        {
237                if(check == 1) return 0;
238                oshutdown(1, 1);
239        }
240        else if(ostrcmp("restart", menuentry->name) == 0)
241        {
242                if(check == 1) return 0;
243                oshutdown(2, 1);
244        }
245        else if(ostrcmp("guirestart", menuentry->name) == 0)
246        {
247                if(check == 1) return 0;
248                oshutdown(3, 1);
249        }
250        else if(ostrcmp("powerofftimer", menuentry->name) == 0)
251        {
252                if(check == 1) return 0;
253                screenpowerofftimer();
254        }
255        else if(ostrcmp("about", menuentry->name) == 0)
256        {
257                if(check == 1) return 0;
258                ret = screenabout();
259        }
260        else if(ostrcmp("language", menuentry->name) == 0)
261        {
262                if(check == 1) return 0;
263                screenlanguage(0);
264        }
265        else if(ostrcmp("avsettings", menuentry->name) == 0)
266        {
267                if(check == 1) return 0;
268                screenavsettings(0);
269        }
270        else if(ostrcmp("timezone", menuentry->name) == 0)
271        {
272                if(check == 1) return 0;
273                screentimezone();
274        }
275        else if(ostrcmp("adjust", menuentry->name) == 0)
276        {
277                if(check == 1) return 0;
278                screenadjust();
279        }
280        else if(ostrcmp("skinadjust", menuentry->name) == 0)
281        {
282                if(check == 1) return 0;
283                screenskinadjust();
284        }
285        else if(ostrcmp("plugins", menuentry->name) == 0)
286        {
287                if(check == 1) return 0;
288                screenplugin();
289        }
290        else if(ostrcmp("recordpath", menuentry->name) == 0)
291        {
292                if(check == 1) return 0;
293                screenrecordpath();
294        }
295        else if(ostrcmp("epgsettings", menuentry->name) == 0)
296        {
297                if(check == 1) return 0;
298                screenepgsettings();
299        }
300        else if(ostrcmp("tunerconfig", menuentry->name) == 0)
301        {
302                if(check == 1) return 0;
303                screentunerconfig();
304        }
305        else if(ostrcmp("vfdisplay", menuentry->name) == 0)
306        {
307                if(check == 1) return 0;
308                screenvfdisplay();
309        }
310        else if(ostrcmp("serviceinfo", menuentry->name) == 0)
311        {
312                if(check == 1) return 0;
313                screenserviceinfo();
314        }
315        else if(ostrcmp("skinselect", menuentry->name) == 0)
316        {
317                if(check == 1) return 0;
318                screenskinselect();
319        }
320        else if(ostrcmp("videosettings", menuentry->name) == 0)
321        {
322                if(check == 1) return 0;
323                screenvideosettings();
324        }
325        else if(ostrcmp("childprotection", menuentry->name) == 0)
326        {
327                if(check == 1) return 0;
328                screenpin();
329        }
330        else if(ostrcmp("dostandby", menuentry->name) == 0)
331        {
332                if(check == 1) return 0;
333                status.standby = 1;
334        }
335        else if(ostrcmp("scartrecorder", menuentry->name) == 0)
336        {
337                if(check == 1) return 0;
338                screenscart();
339        }
340        else if(ostrcmp("timer", menuentry->name) == 0)
341        {
342                if(check == 1) return 0;
343                screenrectimer();
344        }
345        else if(ostrcmp("streaming", menuentry->name) == 0)
346        {
347                if(check == 1) return 0;
348                screenstreaming();
349        }
350        else if(ostrcmp("screensaveradjust", menuentry->name) == 0)
351        {
352                if(check == 1) return 0;
353                screenscreensaveradjust();
354        }
355        else if(ostrcmp("manualsearch", menuentry->name) == 0)
356        {
357                if(check == 1) return 0;
358                screenscanconfig(0);
359        }
360        else if(ostrcmp("autosearch", menuentry->name) == 0)
361        {
362                if(check == 1) return 0;
363                screenscanconfig(1);
364        }
365        else if(ostrcmp("rotorsettings", menuentry->name) == 0)
366        {
367                if(check == 1) return 0;
368                screenpossetup();
369        }
370        else if(ostrcmp("satfinder", menuentry->name) == 0)
371        {
372                if(check == 1) return 0;
373                screensatfinder();
374        }
375        else if(ostrcmp("cinterface", menuentry->name) == 0)
376        {
377                if(check == 1) return 0;
378                screenmoduleconfig();
379        }
380        else if(ostrcmp("epgsearch", menuentry->name) == 0)
381        {
382                if(check == 1) return 0;
383                screenepgsearch();
384        }
385        else if(ostrcmp("channeledit", menuentry->name) == 0)
386        {
387                if(check == 1) return 0;
388                screenchannellist(NULL, NULL, 3);
389        }
390        else if(ostrcmp("wlansettings", menuentry->name) == 0)
391        {
392                if(check == 1) return 0;
393                screennetwork_wlan();
394        }
395        else if(ostrcmp("inadynsettings", menuentry->name) == 0)
396        {
397                if(check == 1) return 0;
398                screennetwork_inadyn();
399        }
400        else if(ostrcmp("blindscanadjust", menuentry->name) == 0)
401        {
402                if(check == 1) return 0;
403                screenblindscanadjust();
404        }
405        else if(menuentry->pluginhandle != NULL)
406        {
407                if(menuentry->input != NULL)
408                {
409                        startplugin = dlsym(menuentry->pluginhandle, menuentry->input);
410                        if(startplugin != NULL)
411                        {
412                                if(check == 1) return 0;
413                                startplugin();
414                        }
415                }
416        }
417        else if(ostrcmp("savesettings", menuentry->name) == 0)
418        {
419                if(check == 1) return 0;
420                debug(10, "SAVING SETTINGS !!!");
421                if(writeallconfig(1) != 0)
422                        textbox(_("Save Settings"), _("Error in Save Settings"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
423                else
424                        textbox(_("Save Settings"), _("Settings succesfull saved"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
425        }
426        else
427                ret = 1;
428
429        debug(1000, "out");
430        return ret;
431}
432
433#endif
Note: See TracBrowser for help on using the repository browser.