summaryrefslogtreecommitdiff
path: root/capplets/time-admin/src/time-zone.h
blob: 70473b24ad929445169c7be24c17fa58a8bb94e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*  time-admin
*   Copyright (C) 2018  zhuyaliang https://github.com/zhuyaliang/
*
*   This program is free software: you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation, either version 3 of the License, or
*   (at your option) any later version.

*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.

*   You should have received a copy of the GNU General Public License
*   along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/

#ifndef __TIME_ZONE_H__
#define __TIME_ZONE_H__

#include "time-share.h"

#ifndef __sun
#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
#else
#  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
#endif

typedef struct TzDB
{
    GPtrArray  *locations;
    GHashTable *backward;
}TzDB;

typedef struct TzLocation
{
    gchar *country;
    gdouble latitude;
    gdouble longitude;
    gchar *zone;
    gchar *comment;

    gdouble dist; /* distance to clicked point for comparison */
}TzLocation;

typedef struct TzInfo
{
    gchar *tzname_normal;
    gchar *tzname_daylight;
    glong utc_offset;
    gint daylight;
}TzInfo;
TzDB      *tz_load_db                 (void);

void       SetupTimezoneDialog        (TimeAdmin *ta);

void       RunTimeZoneDialog          (GtkButton *button,
                                       gpointer   data);

void       TimeZoneDateBaseFree       (TzDB      *db);

GPtrArray *tz_get_locations           (TzDB *db);

TzInfo    *tz_info_from_location      (TzLocation *loc);

glong      tz_location_get_utc_offset (TzLocation *loc);

char      *tz_info_get_clean_name     (TzDB       *tz_db,
                                       const char *tz);

void       tz_info_free               (TzInfo     *tzinfo);

G_DEFINE_AUTOPTR_CLEANUP_FUNC (TzDB,   TimeZoneDateBaseFree)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (TzInfo, tz_info_free)

#endif