source: titan/titan/timezone.h @ 15272

Last change on this file since 15272 was 10335, checked in by nit, 11 years ago

[titan] fix _()

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        debug(1000, "in");
7        FILE *fd = NULL;
8        char *fileline = NULL, *filename = NULL;
9        char *pos = NULL, *name = NULL, *zone = NULL;
10        struct skin* node = NULL;
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                if(fileline[strlen(fileline) - 1] == '\n')
34                        fileline[strlen(fileline) - 1] = '\0';
35                if(fileline[strlen(fileline) - 1] == '\r')
36                        fileline[strlen(fileline) - 1] = '\0';
37
38                pos = strstr(fileline, "<zone ");
39                if(pos == NULL)
40                        continue;
41
42                name = getxmlentry(fileline, " name=");
43                if(name == NULL)
44                        continue;
45                zone = getxmlentry(fileline, " zone=");
46                if(zone == NULL)
47                {
48                        free(name);
49                        continue;
50                }
51
52                node = addlistbox(timezone, listbox, node, 1);
53                if(node != NULL)
54                {
55                        changetext(node, name);
56                        changename(node, name);
57                        changeinput(node, zone);
58                }
59
60                free(name);
61                free(zone);
62        }
63
64        fclose(fd);
65        free(fileline);
66        debug(1000, "out");
67        return 0;
68}
69
70void screentimezone()
71{
72        int rcret = 0, ret = 0;
73        struct skin* timezone = getscreen("timezone");
74        struct skin* listbox = getscreennode(timezone, "listbox");
75
76        readtimezone(timezone, listbox);
77
78        setlistboxselection(listbox, getconfig("timezonename", NULL));
79        drawscreen(timezone, 0);
80        addscreenrc(timezone, listbox);
81
82        while(1)
83        {
84                rcret = waitrc(timezone, 0, 0);
85
86                if(rcret == getrcconfigint("rcexit", NULL)) break;
87                if(rcret == getrcconfigint("rcok", NULL))
88                {
89                        if(listbox->select != NULL)
90                        {
91                                ret = settimezone(listbox->select->input);
92                                if(ret == 0)
93                                {
94                                        addconfig("timezone", listbox->select->input);
95                                        addconfig("timezonename", listbox->select->name);
96                                }
97                        }
98                        break;
99                }
100        }
101
102        delmarkedscreennodes(timezone, 1);
103        delownerrc(timezone);
104        clearscreen(timezone);
105}
106
107#endif
Note: See TracBrowser for help on using the repository browser.