source: titan/titan/timezone.h @ 42227

Last change on this file since 42227 was 23702, checked in by nit, 11 years ago

[titan] cleanup

File size: 2.0 KB
Line 
1#ifndef TIMEZONE_H
2#define TIMEZONE_H
3
4int readtimezone(struct skin* timezone, struct skin* listbox)
5{
6        FILE *fd = NULL;
7        char *fileline = NULL, *filename = NULL;
8        char *pos = NULL, *name = NULL, *zone = NULL;
9        struct skin* node = NULL;
10        int len = 0;
11
12        filename = getconfig("timezonefile", NULL);
13
14        fileline = malloc(MINMALLOC);
15        if(fileline == NULL)
16        {
17                err("no memory");       
18                return 1;
19        }
20
21        fd = fopen(filename, "r");
22        if(fd == NULL)
23        {
24                perr("can't open %s", filename);
25                free(fileline);
26                return 1;
27        }
28
29        while(fgets(fileline, MINMALLOC, fd) != NULL)
30        {
31                if(fileline[0] == '#' || fileline[0] == '\n')
32                        continue;
33                len = strlen(fileline) - 1;
34                if(len >= 0 && fileline[len] == '\n')
35                        fileline[len] = '\0';
36                len--;
37                if(len >= 0 && fileline[len] == '\r')
38                        fileline[len] = '\0';
39
40                pos = ostrstr(fileline, "<zone ");
41                if(pos == NULL)
42                        continue;
43
44                name = getxmlentry(fileline, " name=");
45                if(name == NULL)
46                        continue;
47                zone = getxmlentry(fileline, " zone=");
48                if(zone == NULL)
49                {
50                        free(name);
51                        continue;
52                }
53
54                node = addlistbox(timezone, listbox, node, 1);
55                if(node != NULL)
56                {
57                        changetext(node, name);
58                        changename(node, name);
59                        changeinput(node, zone);
60                }
61
62                free(name);
63                free(zone);
64        }
65
66        fclose(fd);
67        free(fileline);
68        return 0;
69}
70
71void screentimezone()
72{
73        int rcret = 0, ret = 0;
74        struct skin* timezone = getscreen("timezone");
75        struct skin* listbox = getscreennode(timezone, "listbox");
76
77        readtimezone(timezone, listbox);
78
79        setlistboxselection(listbox, getconfig("timezonename", NULL));
80        drawscreen(timezone, 0, 0);
81        addscreenrc(timezone, listbox);
82
83        while(1)
84        {
85                rcret = waitrc(timezone, 0, 0);
86
87                if(rcret == getrcconfigint("rcexit", NULL)) break;
88                if(rcret == getrcconfigint("rcok", NULL))
89                {
90                        if(listbox->select != NULL)
91                        {
92                                ret = settimezone(listbox->select->input);
93                                if(ret == 0)
94                                {
95                                        addconfig("timezone", listbox->select->input);
96                                        addconfig("timezonename", listbox->select->name);
97                                }
98                        }
99                        break;
100                }
101        }
102
103        delmarkedscreennodes(timezone, 1);
104        delownerrc(timezone);
105        clearscreen(timezone);
106}
107
108#endif
Note: See TracBrowser for help on using the repository browser.