1340 lines
42 KiB
Diff
1340 lines
42 KiB
Diff
From 721adaf8332cf0a67843d8734e9e51a58894f8de Mon Sep 17 00:00:00 2001
|
|
From: Iain Lane <iain.lane@canonical.com>
|
|
Date: Tue, 5 Nov 2013 11:31:07 +0000
|
|
Subject: [PATCH 01/10] Make whitespace and indentation consistent
|
|
|
|
---
|
|
src/cc-timezone-map.c | 87 +++----
|
|
src/test-timezone.c | 85 +++----
|
|
src/timezone-completion.c | 568 +++++++++++++++++++++++++---------------------
|
|
src/tz.c | 236 +++++++++----------
|
|
4 files changed, 519 insertions(+), 457 deletions(-)
|
|
|
|
diff --git a/src/cc-timezone-map.c b/src/cc-timezone-map.c
|
|
index 652f838..4d7fa40 100644
|
|
--- a/src/cc-timezone-map.c
|
|
+++ b/src/cc-timezone-map.c
|
|
@@ -974,40 +974,41 @@ get_loc_for_xy (GtkWidget * widget, gint x, gint y)
|
|
width = alloc.width;
|
|
height = alloc.height;
|
|
|
|
- if (x == priv->previous_x && y == priv->previous_y) {
|
|
- priv->distances = g_list_next (priv->distances);
|
|
- location = (CcTimezoneLocation*) priv->distances->data;
|
|
- } else {
|
|
- g_list_free (priv->distances);
|
|
- priv->distances = NULL;
|
|
- for (i = 0; i < array->len; i++)
|
|
- {
|
|
- gdouble pointx, pointy, dx, dy;
|
|
- CcTimezoneLocation *loc = array->pdata[i];
|
|
+ if (x == priv->previous_x && y == priv->previous_y)
|
|
+ {
|
|
+ priv->distances = g_list_next (priv->distances);
|
|
+ location = (CcTimezoneLocation*) priv->distances->data;
|
|
+ } else {
|
|
+ g_list_free (priv->distances);
|
|
+ priv->distances = NULL;
|
|
+ for (i = 0; i < array->len; i++)
|
|
+ {
|
|
+ gdouble pointx, pointy, dx, dy;
|
|
+ CcTimezoneLocation *loc = array->pdata[i];
|
|
|
|
- g_object_get_property(G_OBJECT (loc), "longitude", &glon);
|
|
- g_object_get_property(G_OBJECT (loc), "latitude", &glat);
|
|
- pointx = convert_longtitude_to_x (g_value_get_double(&glon), width);
|
|
- pointy = convert_latitude_to_y (g_value_get_double(&glat), height);
|
|
+ g_object_get_property(G_OBJECT (loc), "longitude", &glon);
|
|
+ g_object_get_property(G_OBJECT (loc), "latitude", &glat);
|
|
+ pointx = convert_longtitude_to_x (g_value_get_double(&glon), width);
|
|
+ pointy = convert_latitude_to_y (g_value_get_double(&glat), height);
|
|
|
|
- dx = pointx - x;
|
|
- dy = pointy - y;
|
|
+ dx = pointx - x;
|
|
+ dy = pointy - y;
|
|
|
|
- g_value_set_double(&gdist, (gdouble) dx * dx + dy * dy);
|
|
- g_object_set_property(G_OBJECT (loc), "dist", &gdist);
|
|
- priv->distances = g_list_prepend (priv->distances, loc);
|
|
- }
|
|
- priv->distances = g_list_sort (priv->distances, (GCompareFunc) sort_locations);
|
|
- location = (CcTimezoneLocation*) priv->distances->data;
|
|
- priv->previous_x = x;
|
|
- priv->previous_y = y;
|
|
- }
|
|
+ g_value_set_double(&gdist, (gdouble) dx * dx + dy * dy);
|
|
+ g_object_set_property(G_OBJECT (loc), "dist", &gdist);
|
|
+ priv->distances = g_list_prepend (priv->distances, loc);
|
|
+ }
|
|
+ priv->distances = g_list_sort (priv->distances, (GCompareFunc) sort_locations);
|
|
+ location = (CcTimezoneLocation*) priv->distances->data;
|
|
+ priv->previous_x = x;
|
|
+ priv->previous_y = y;
|
|
+ }
|
|
|
|
- g_value_unset (&glon);
|
|
- g_value_unset (&glat);
|
|
- g_value_unset (&gdist);
|
|
+ g_value_unset (&glon);
|
|
+ g_value_unset (&glat);
|
|
+ g_value_unset (&gdist);
|
|
|
|
- return location;
|
|
+ return location;
|
|
}
|
|
|
|
static gboolean
|
|
@@ -1199,20 +1200,20 @@ cc_timezone_map_get_timezone_at_coords (CcTimezoneMap *map, gdouble lon, gdouble
|
|
if (zone < G_N_ELEMENTS(olsen_map_timezones))
|
|
city = olsen_map_timezones[zone];
|
|
|
|
- if (city != NULL) {
|
|
- return city;
|
|
- }
|
|
- else {
|
|
- GtkAllocation alloc;
|
|
- GValue val_zone = {0};
|
|
- g_value_init (&val_zone, G_TYPE_STRING);
|
|
- gtk_widget_get_allocation (GTK_WIDGET (map), &alloc);
|
|
- x = convert_longtitude_to_x(lon, alloc.width);
|
|
- y = convert_latitude_to_y(lat, alloc.height);
|
|
- CcTimezoneLocation * loc = get_loc_for_xy(GTK_WIDGET (map), x, y);
|
|
- g_value_unset (&val_zone);
|
|
- return g_value_get_string(&val_zone);
|
|
- }
|
|
+ if (city != NULL)
|
|
+ {
|
|
+ return city;
|
|
+ } else {
|
|
+ GtkAllocation alloc;
|
|
+ GValue val_zone = {0};
|
|
+ g_value_init (&val_zone, G_TYPE_STRING);
|
|
+ gtk_widget_get_allocation (GTK_WIDGET (map), &alloc);
|
|
+ x = convert_longtitude_to_x(lon, alloc.width);
|
|
+ y = convert_latitude_to_y(lat, alloc.height);
|
|
+ CcTimezoneLocation * loc = get_loc_for_xy(GTK_WIDGET (map), x, y);
|
|
+ g_value_unset (&val_zone);
|
|
+ return g_value_get_string(&val_zone);
|
|
+ }
|
|
}
|
|
|
|
void
|
|
diff --git a/src/test-timezone.c b/src/test-timezone.c
|
|
index 9aaf707..a2271c4 100644
|
|
--- a/src/test-timezone.c
|
|
+++ b/src/test-timezone.c
|
|
@@ -5,58 +5,61 @@
|
|
|
|
int main (int argc, char **argv)
|
|
{
|
|
- TzDB *db;
|
|
- GPtrArray *locs;
|
|
- guint i;
|
|
- char *pixmap_dir;
|
|
- int retval = 0;
|
|
+ TzDB *db;
|
|
+ GPtrArray *locs;
|
|
+ guint i;
|
|
+ char *pixmap_dir;
|
|
+ int retval = 0;
|
|
|
|
setlocale (LC_ALL, "");
|
|
|
|
- if (argc == 2) {
|
|
- pixmap_dir = g_strdup (argv[1]);
|
|
- } else if (argc == 1) {
|
|
- pixmap_dir = g_strdup ("data/");
|
|
- } else {
|
|
- g_message ("Usage: %s [PIXMAP DIRECTORY]", argv[0]);
|
|
- return 1;
|
|
- }
|
|
+ if (argc == 2)
|
|
+ {
|
|
+ pixmap_dir = g_strdup (argv[1]);
|
|
+ } else if (argc == 1) {
|
|
+ pixmap_dir = g_strdup ("data/");
|
|
+ } else {
|
|
+ g_message ("Usage: %s [PIXMAP DIRECTORY]", argv[0]);
|
|
+ return 1;
|
|
+ }
|
|
|
|
- g_type_init();
|
|
- GValue zone = {0};
|
|
- g_value_init(&zone, G_TYPE_STRING);
|
|
+ g_type_init();
|
|
+ GValue zone = {0};
|
|
+ g_value_init(&zone, G_TYPE_STRING);
|
|
|
|
- db = tz_load_db ();
|
|
- locs = tz_get_locations (db);
|
|
- for (i = 0; i < locs->len ; i++) {
|
|
- CcTimezoneLocation *loc = locs->pdata[i];
|
|
+ db = tz_load_db ();
|
|
+ locs = tz_get_locations (db);
|
|
+ for (i = 0; i < locs->len ; i++)
|
|
+ {
|
|
+ CcTimezoneLocation *loc = locs->pdata[i];
|
|
|
|
- TzInfo *info;
|
|
- char *filename, *path;
|
|
- gdouble selected_offset;
|
|
- char buf[16];
|
|
- g_object_get_property(G_OBJECT (loc), "zone", &zone);
|
|
+ TzInfo *info;
|
|
+ char *filename, *path;
|
|
+ gdouble selected_offset;
|
|
+ char buf[16];
|
|
+ g_object_get_property(G_OBJECT (loc), "zone", &zone);
|
|
|
|
- info = tz_info_from_location (loc);
|
|
- selected_offset = tz_location_get_utc_offset (loc)
|
|
- / (60.0*60.0) + ((info->daylight) ? -1.0 : 0.0);
|
|
+ info = tz_info_from_location (loc);
|
|
+ selected_offset = tz_location_get_utc_offset (loc)
|
|
+ / (60.0*60.0) + ((info->daylight) ? -1.0 : 0.0);
|
|
|
|
- filename = g_strdup_printf ("timezone_%s.png",
|
|
+ filename = g_strdup_printf ("timezone_%s.png",
|
|
g_ascii_formatd (buf, sizeof (buf),
|
|
"%g", selected_offset));
|
|
- path = g_build_filename (pixmap_dir, filename, NULL);
|
|
+ path = g_build_filename (pixmap_dir, filename, NULL);
|
|
|
|
- if (g_file_test (path, G_FILE_TEST_IS_REGULAR) == FALSE) {
|
|
- g_message ("File '%s' missing for zone '%s'", filename, g_value_get_string(&zone));
|
|
- retval = 1;
|
|
- }
|
|
+ if (g_file_test (path, G_FILE_TEST_IS_REGULAR) == FALSE)
|
|
+ {
|
|
+ g_message ("File '%s' missing for zone '%s'", filename, g_value_get_string(&zone));
|
|
+ retval = 1;
|
|
+ }
|
|
|
|
- g_free (filename);
|
|
- g_free (path);
|
|
- tz_info_free (info);
|
|
- }
|
|
- tz_db_free (db);
|
|
- g_free (pixmap_dir);
|
|
+ g_free (filename);
|
|
+ g_free (path);
|
|
+ tz_info_free (info);
|
|
+ }
|
|
+ tz_db_free (db);
|
|
+ g_free (pixmap_dir);
|
|
|
|
- return retval;
|
|
+ return retval;
|
|
}
|
|
diff --git a/src/timezone-completion.c b/src/timezone-completion.c
|
|
index 3d42168..f6ca8c8 100644
|
|
--- a/src/timezone-completion.c
|
|
+++ b/src/timezone-completion.c
|
|
@@ -138,13 +138,14 @@ json_parse_ready (GObject *object, GAsyncResult *res, gpointer user_data)
|
|
g_cancellable_reset (priv->cancel);
|
|
}
|
|
|
|
- if (error != NULL) {
|
|
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
|
- save_and_use_model (completion, priv->initial_model);
|
|
- g_warning ("Could not parse geoname JSON data: %s", error->message);
|
|
- g_error_free (error);
|
|
- return;
|
|
- }
|
|
+ if (error != NULL)
|
|
+ {
|
|
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
|
+ save_and_use_model (completion, priv->initial_model);
|
|
+ g_warning ("Could not parse geoname JSON data: %s", error->message);
|
|
+ g_error_free (error);
|
|
+ return;
|
|
+ }
|
|
|
|
GtkListStore * store = gtk_list_store_new (CC_TIMEZONE_COMPLETION_LAST,
|
|
G_TYPE_STRING,
|
|
@@ -156,73 +157,85 @@ json_parse_ready (GObject *object, GAsyncResult *res, gpointer user_data)
|
|
|
|
JsonReader * reader = json_reader_new (json_parser_get_root (JSON_PARSER (object)));
|
|
|
|
- if (!json_reader_is_array (reader)) {
|
|
- g_warning ("Could not parse geoname JSON data");
|
|
- save_and_use_model (completion, priv->initial_model);
|
|
- g_object_unref (G_OBJECT (reader));
|
|
- return;
|
|
- }
|
|
+ if (!json_reader_is_array (reader))
|
|
+ {
|
|
+ g_warning ("Could not parse geoname JSON data");
|
|
+ save_and_use_model (completion, priv->initial_model);
|
|
+ g_object_unref (G_OBJECT (reader));
|
|
+ return;
|
|
+ }
|
|
|
|
gint i, count = json_reader_count_elements (reader);
|
|
- for (i = 0; i < count; ++i) {
|
|
- if (!json_reader_read_element (reader, i))
|
|
- continue;
|
|
+ for (i = 0; i < count; ++i)
|
|
+ {
|
|
+ if (!json_reader_read_element (reader, i))
|
|
+ continue;
|
|
|
|
- if (json_reader_is_object (reader)) {
|
|
- const gchar * name = NULL;
|
|
- const gchar * admin1 = NULL;
|
|
- const gchar * country = NULL;
|
|
- const gchar * longitude = NULL;
|
|
- const gchar * latitude = NULL;
|
|
- gboolean skip = FALSE;
|
|
- if (json_reader_read_member (reader, "name")) {
|
|
- name = json_reader_get_string_value (reader);
|
|
- json_reader_end_member (reader);
|
|
- }
|
|
- if (json_reader_read_member (reader, "admin1")) {
|
|
- admin1 = json_reader_get_string_value (reader);
|
|
- json_reader_end_member (reader);
|
|
- }
|
|
- if (json_reader_read_member (reader, "country")) {
|
|
- country = json_reader_get_string_value (reader);
|
|
- json_reader_end_member (reader);
|
|
- }
|
|
- if (json_reader_read_member (reader, "longitude")) {
|
|
- longitude = json_reader_get_string_value (reader);
|
|
- json_reader_end_member (reader);
|
|
- }
|
|
- if (json_reader_read_member (reader, "latitude")) {
|
|
- latitude = json_reader_get_string_value (reader);
|
|
- json_reader_end_member (reader);
|
|
- }
|
|
+ if (json_reader_is_object (reader))
|
|
+ {
|
|
+ const gchar * name = NULL;
|
|
+ const gchar * admin1 = NULL;
|
|
+ const gchar * country = NULL;
|
|
+ const gchar * longitude = NULL;
|
|
+ const gchar * latitude = NULL;
|
|
+ gboolean skip = FALSE;
|
|
+ if (json_reader_read_member (reader, "name"))
|
|
+ {
|
|
+ name = json_reader_get_string_value (reader);
|
|
+ json_reader_end_member (reader);
|
|
+ }
|
|
+ if (json_reader_read_member (reader, "admin1"))
|
|
+ {
|
|
+ admin1 = json_reader_get_string_value (reader);
|
|
+ json_reader_end_member (reader);
|
|
+ }
|
|
+ if (json_reader_read_member (reader, "country"))
|
|
+ {
|
|
+ country = json_reader_get_string_value (reader);
|
|
+ json_reader_end_member (reader);
|
|
+ }
|
|
+ if (json_reader_read_member (reader, "longitude"))
|
|
+ {
|
|
+ longitude = json_reader_get_string_value (reader);
|
|
+ json_reader_end_member (reader);
|
|
+ }
|
|
+ if (json_reader_read_member (reader, "latitude"))
|
|
+ {
|
|
+ latitude = json_reader_get_string_value (reader);
|
|
+ json_reader_end_member (reader);
|
|
+ }
|
|
|
|
if (g_strcmp0(name, prev_name) == 0 &&
|
|
g_strcmp0(admin1, prev_admin1) == 0 &&
|
|
- g_strcmp0(country, prev_country) == 0) {
|
|
- // Sometimes the data will have duplicate entries that only differ
|
|
- // in longitude and latitude. e.g. "rio de janeiro", "wellington"
|
|
- skip = TRUE;
|
|
- }
|
|
+ g_strcmp0(country, prev_country) == 0)
|
|
+ {
|
|
+ // Sometimes the data will have duplicate entries that only differ
|
|
+ // in longitude and latitude. e.g. "rio de janeiro", "wellington"
|
|
+ skip = TRUE;
|
|
+ }
|
|
|
|
- if (!skip) {
|
|
- GtkTreeIter iter;
|
|
- gtk_list_store_append (store, &iter);
|
|
- gtk_list_store_set (store, &iter,
|
|
- CC_TIMEZONE_COMPLETION_ZONE, NULL,
|
|
- CC_TIMEZONE_COMPLETION_NAME, name,
|
|
- CC_TIMEZONE_COMPLETION_ADMIN1, admin1,
|
|
- CC_TIMEZONE_COMPLETION_COUNTRY, country,
|
|
- CC_TIMEZONE_COMPLETION_LONGITUDE, longitude,
|
|
- CC_TIMEZONE_COMPLETION_LATITUDE, latitude,
|
|
- -1);
|
|
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
|
|
- CC_TIMEZONE_COMPLETION_NAME, sort_zone,
|
|
- g_utf8_casefold(priv->request_text, -1),
|
|
- g_free);
|
|
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
|
|
- CC_TIMEZONE_COMPLETION_NAME,
|
|
- GTK_SORT_ASCENDING);
|
|
- }
|
|
+ if (!skip)
|
|
+ {
|
|
+ GtkTreeIter iter;
|
|
+ gtk_list_store_append (store, &iter);
|
|
+ gtk_list_store_set (store, &iter,
|
|
+ CC_TIMEZONE_COMPLETION_ZONE, NULL,
|
|
+ CC_TIMEZONE_COMPLETION_NAME, name,
|
|
+ CC_TIMEZONE_COMPLETION_ADMIN1, admin1,
|
|
+ CC_TIMEZONE_COMPLETION_COUNTRY, country,
|
|
+ CC_TIMEZONE_COMPLETION_LONGITUDE, longitude,
|
|
+ CC_TIMEZONE_COMPLETION_LATITUDE, latitude,
|
|
+ -1);
|
|
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
|
|
+ CC_TIMEZONE_COMPLETION_NAME,
|
|
+ sort_zone,
|
|
+ g_utf8_casefold(priv->request_text,
|
|
+ -1),
|
|
+ g_free);
|
|
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
|
|
+ CC_TIMEZONE_COMPLETION_NAME,
|
|
+ GTK_SORT_ASCENDING);
|
|
+ }
|
|
|
|
prev_name = name;
|
|
prev_admin1 = admin1;
|
|
@@ -232,19 +245,21 @@ json_parse_ready (GObject *object, GAsyncResult *res, gpointer user_data)
|
|
json_reader_end_element (reader);
|
|
}
|
|
|
|
- if (strlen (priv->request_text) < 4) {
|
|
- gchar * lower_text = g_ascii_strdown (priv->request_text, -1);
|
|
- if (g_strcmp0 (lower_text, "ut") == 0 ||
|
|
- g_strcmp0 (lower_text, "utc") == 0) {
|
|
- GtkTreeIter iter;
|
|
- gtk_list_store_append (store, &iter);
|
|
- gtk_list_store_set (store, &iter,
|
|
- CC_TIMEZONE_COMPLETION_ZONE, "UTC",
|
|
- CC_TIMEZONE_COMPLETION_NAME, "UTC",
|
|
- -1);
|
|
+ if (strlen (priv->request_text) < 4)
|
|
+ {
|
|
+ gchar * lower_text = g_ascii_strdown (priv->request_text, -1);
|
|
+ if (g_strcmp0 (lower_text, "ut") == 0 ||
|
|
+ g_strcmp0 (lower_text, "utc") == 0)
|
|
+ {
|
|
+ GtkTreeIter iter;
|
|
+ gtk_list_store_append (store, &iter);
|
|
+ gtk_list_store_set (store, &iter,
|
|
+ CC_TIMEZONE_COMPLETION_ZONE, "UTC",
|
|
+ CC_TIMEZONE_COMPLETION_NAME, "UTC",
|
|
+ -1);
|
|
+ }
|
|
+ g_free (lower_text);
|
|
}
|
|
- g_free (lower_text);
|
|
- }
|
|
|
|
save_and_use_model (completion, GTK_TREE_MODEL (store));
|
|
g_object_unref (G_OBJECT (reader));
|
|
@@ -260,17 +275,20 @@ geonames_data_ready (GObject *object, GAsyncResult *res, gpointer user_data)
|
|
|
|
stream = g_file_read_finish (G_FILE (object), res, &error);
|
|
|
|
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) && priv->cancel) {
|
|
- g_cancellable_reset (priv->cancel);
|
|
- }
|
|
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) && priv->cancel)
|
|
+ {
|
|
+ g_cancellable_reset (priv->cancel);
|
|
+ }
|
|
|
|
- if (error != NULL) {
|
|
- if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
|
- save_and_use_model (completion, priv->initial_model);
|
|
- g_warning ("Could not connect to geoname lookup server: %s", error->message);
|
|
- g_error_free (error);
|
|
- return;
|
|
- }
|
|
+ if (error != NULL)
|
|
+ {
|
|
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
|
+ save_and_use_model (completion, priv->initial_model);
|
|
+ g_warning ("Could not connect to geoname lookup server: %s",
|
|
+ error->message);
|
|
+ g_error_free (error);
|
|
+ return;
|
|
+ }
|
|
|
|
JsonParser * parser = json_parser_new ();
|
|
json_parser_load_from_stream_async (parser, G_INPUT_STREAM (stream), priv->cancel,
|
|
@@ -286,11 +304,12 @@ get_locale (void)
|
|
const gchar *env = NULL;
|
|
gint i;
|
|
|
|
- for (i = 0; env_names[i]; i++) {
|
|
- env = g_getenv (env_names[i]);
|
|
- if (env != NULL && env[0] != 0)
|
|
- break;
|
|
- }
|
|
+ for (i = 0; env_names[i]; i++)
|
|
+ {
|
|
+ env = g_getenv (env_names[i]);
|
|
+ if (env != NULL && env[0] != 0)
|
|
+ break;
|
|
+ }
|
|
|
|
if (env == NULL)
|
|
return NULL;
|
|
@@ -301,10 +320,11 @@ get_locale (void)
|
|
if (split == NULL)
|
|
return NULL;
|
|
|
|
- if (split[0] == NULL) {
|
|
- g_strfreev (split);
|
|
- return NULL;
|
|
- }
|
|
+ if (split[0] == NULL)
|
|
+ {
|
|
+ g_strfreev (split);
|
|
+ return NULL;
|
|
+ }
|
|
|
|
gchar *locale = g_strdup (split[0]);
|
|
g_strfreev (split);
|
|
@@ -316,15 +336,16 @@ get_version (void)
|
|
{
|
|
static gchar *version = NULL;
|
|
|
|
- if (version == NULL) {
|
|
- gchar *stdout = NULL;
|
|
- g_spawn_command_line_sync ("lsb_release -rs", &stdout, NULL, NULL, NULL);
|
|
+ if (version == NULL)
|
|
+ {
|
|
+ gchar *stdout = NULL;
|
|
+ g_spawn_command_line_sync ("lsb_release -rs", &stdout, NULL, NULL, NULL);
|
|
|
|
- if (stdout != NULL)
|
|
- version = g_strstrip (stdout);
|
|
- else
|
|
- version = g_strdup("");
|
|
- }
|
|
+ if (stdout != NULL)
|
|
+ version = g_strstrip (stdout);
|
|
+ else
|
|
+ version = g_strdup("");
|
|
+ }
|
|
|
|
return version;
|
|
}
|
|
@@ -336,15 +357,17 @@ request_zones (CcTimezoneCompletion * completion)
|
|
|
|
priv->queued_request = 0;
|
|
|
|
- if (priv->entry == NULL) {
|
|
- return FALSE;
|
|
- }
|
|
+ if (priv->entry == NULL)
|
|
+ {
|
|
+ return FALSE;
|
|
+ }
|
|
|
|
/* Cancel any ongoing request */
|
|
- if (priv->cancel) {
|
|
- g_cancellable_cancel (priv->cancel);
|
|
- g_cancellable_reset (priv->cancel);
|
|
- }
|
|
+ if (priv->cancel)
|
|
+ {
|
|
+ g_cancellable_cancel (priv->cancel);
|
|
+ g_cancellable_reset (priv->cancel);
|
|
+ }
|
|
g_free (priv->request_text);
|
|
|
|
const gchar * text = gtk_entry_get_text (priv->entry);
|
|
@@ -371,21 +394,26 @@ entry_changed (GtkEntry * entry, CcTimezoneCompletion * completion)
|
|
{
|
|
CcTimezoneCompletionPrivate * priv = completion->priv;
|
|
|
|
- if (priv->queued_request) {
|
|
- g_source_remove (priv->queued_request);
|
|
- priv->queued_request = 0;
|
|
- }
|
|
+ if (priv->queued_request)
|
|
+ {
|
|
+ g_source_remove (priv->queued_request);
|
|
+ priv->queued_request = 0;
|
|
+ }
|
|
|
|
/* See if we've already got this one */
|
|
const gchar * text = gtk_entry_get_text (priv->entry);
|
|
gpointer data;
|
|
- if (g_hash_table_lookup_extended (priv->request_table, text, NULL, &data)) {
|
|
- gtk_entry_completion_set_model (GTK_ENTRY_COMPLETION (completion), GTK_TREE_MODEL (data));
|
|
- }
|
|
- else {
|
|
- priv->queued_request = g_timeout_add (300, (GSourceFunc)request_zones, completion);
|
|
- gtk_entry_completion_set_model (GTK_ENTRY_COMPLETION (completion), NULL);
|
|
- }
|
|
+ if (g_hash_table_lookup_extended (priv->request_table, text, NULL, &data))
|
|
+ {
|
|
+ gtk_entry_completion_set_model (GTK_ENTRY_COMPLETION (completion),
|
|
+ GTK_TREE_MODEL (data));
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ priv->queued_request = g_timeout_add (300, (GSourceFunc)request_zones,
|
|
+ completion);
|
|
+ gtk_entry_completion_set_model (GTK_ENTRY_COMPLETION (completion), NULL);
|
|
+ }
|
|
gtk_entry_completion_complete (GTK_ENTRY_COMPLETION (completion));
|
|
}
|
|
|
|
@@ -395,18 +423,21 @@ get_descendent (GtkWidget * parent, GType type)
|
|
if (g_type_is_a (G_OBJECT_TYPE (parent), type))
|
|
return parent;
|
|
|
|
- if (GTK_IS_CONTAINER (parent)) {
|
|
- GList * children = gtk_container_get_children (GTK_CONTAINER (parent));
|
|
- GList * iter;
|
|
- for (iter = children; iter; iter = iter->next) {
|
|
- GtkWidget * found = get_descendent (GTK_WIDGET (iter->data), type);
|
|
- if (found) {
|
|
- g_list_free (children);
|
|
- return found;
|
|
- }
|
|
+ if (GTK_IS_CONTAINER (parent))
|
|
+ {
|
|
+ GList * children = gtk_container_get_children (GTK_CONTAINER (parent));
|
|
+ GList * iter;
|
|
+ for (iter = children; iter; iter = iter->next)
|
|
+ {
|
|
+ GtkWidget * found = get_descendent (GTK_WIDGET (iter->data), type);
|
|
+ if (found)
|
|
+ {
|
|
+ g_list_free (children);
|
|
+ return found;
|
|
+ }
|
|
+ }
|
|
+ g_list_free (children);
|
|
}
|
|
- g_list_free (children);
|
|
- }
|
|
|
|
return NULL;
|
|
}
|
|
@@ -429,20 +460,26 @@ find_popup_treeview (GtkWidget * widget, GtkTreeModel * model)
|
|
GtkWindowGroup * group = gtk_window_get_group (GTK_WINDOW (toplevel));
|
|
GList * windows = gtk_window_group_list_windows (group);
|
|
GList * iter;
|
|
- for (iter = windows; iter; iter = iter->next) {
|
|
- if (iter->data == toplevel)
|
|
- continue; // Skip our own window, we don't have it
|
|
- GtkWidget * view = get_descendent (GTK_WIDGET (iter->data), GTK_TYPE_TREE_VIEW);
|
|
- if (view != NULL) {
|
|
- GtkTreeModel * tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
|
|
- if (GTK_IS_TREE_MODEL_FILTER (tree_model))
|
|
- tree_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (tree_model));
|
|
- if (tree_model == model) {
|
|
- g_list_free (windows);
|
|
- return GTK_TREE_VIEW (view);
|
|
- }
|
|
+ for (iter = windows; iter; iter = iter->next)
|
|
+ {
|
|
+ if (iter->data == toplevel)
|
|
+ continue; // Skip our own window, we don't have it
|
|
+ GtkWidget * view = get_descendent (GTK_WIDGET (iter->data),
|
|
+ GTK_TYPE_TREE_VIEW);
|
|
+ if (view != NULL)
|
|
+ {
|
|
+ GtkTreeModel * tree_model =
|
|
+ gtk_tree_view_get_model (GTK_TREE_VIEW (view));
|
|
+ if (GTK_IS_TREE_MODEL_FILTER (tree_model))
|
|
+ tree_model = gtk_tree_model_filter_get_model (
|
|
+ GTK_TREE_MODEL_FILTER (tree_model));
|
|
+ if (tree_model == model)
|
|
+ {
|
|
+ g_list_free (windows);
|
|
+ return GTK_TREE_VIEW (view);
|
|
+ }
|
|
+ }
|
|
}
|
|
- }
|
|
g_list_free (windows);
|
|
|
|
return NULL;
|
|
@@ -453,26 +490,30 @@ entry_keypress (GtkEntry * entry, GdkEventKey *event, CcTimezoneCompletion * co
|
|
{
|
|
if (event->keyval == GDK_KEY_ISO_Enter ||
|
|
event->keyval == GDK_KEY_KP_Enter ||
|
|
- event->keyval == GDK_KEY_Return) {
|
|
- /* Make sure that user has a selection to choose, otherwise ignore */
|
|
- GtkTreeModel * model = gtk_entry_completion_get_model (GTK_ENTRY_COMPLETION (completion));
|
|
- GtkTreeView * view = find_popup_treeview (GTK_WIDGET (entry), model);
|
|
- if (view == NULL) {
|
|
- // Just beep if popup hasn't appeared yet.
|
|
- gtk_widget_error_bell (GTK_WIDGET (entry));
|
|
- return TRUE;
|
|
- }
|
|
+ event->keyval == GDK_KEY_Return)
|
|
+ {
|
|
+ /* Make sure that user has a selection to choose, otherwise ignore */
|
|
+ GtkTreeModel * model = gtk_entry_completion_get_model (
|
|
+ GTK_ENTRY_COMPLETION (completion));
|
|
+ GtkTreeView * view = find_popup_treeview (GTK_WIDGET (entry), model);
|
|
+ if (view == NULL)
|
|
+ {
|
|
+ // Just beep if popup hasn't appeared yet.
|
|
+ gtk_widget_error_bell (GTK_WIDGET (entry));
|
|
+ return TRUE;
|
|
+ }
|
|
|
|
- GtkTreeSelection * sel = gtk_tree_view_get_selection (view);
|
|
- GtkTreeModel * sel_model = NULL;
|
|
- if (!gtk_tree_selection_get_selected (sel, &sel_model, NULL)) {
|
|
- // No selection, we should help them out and select first item in list
|
|
- GtkTreeIter iter;
|
|
- if (gtk_tree_model_get_iter_first (sel_model, &iter))
|
|
- gtk_tree_selection_select_iter (sel, &iter);
|
|
- // And fall through to normal handler code
|
|
+ GtkTreeSelection * sel = gtk_tree_view_get_selection (view);
|
|
+ GtkTreeModel * sel_model = NULL;
|
|
+ if (!gtk_tree_selection_get_selected (sel, &sel_model, NULL))
|
|
+ {
|
|
+ // No selection, we should help them out and select first item in list
|
|
+ GtkTreeIter iter;
|
|
+ if (gtk_tree_model_get_iter_first (sel_model, &iter))
|
|
+ gtk_tree_selection_select_iter (sel, &iter);
|
|
+ // And fall through to normal handler code
|
|
+ }
|
|
}
|
|
- }
|
|
|
|
return FALSE;
|
|
}
|
|
@@ -482,32 +523,37 @@ cc_timezone_completion_watch_entry (CcTimezoneCompletion * completion, GtkEntry
|
|
{
|
|
CcTimezoneCompletionPrivate * priv = completion->priv;
|
|
|
|
- if (priv->queued_request) {
|
|
- g_source_remove (priv->queued_request);
|
|
- priv->queued_request = 0;
|
|
- }
|
|
- if (priv->entry) {
|
|
- g_signal_handler_disconnect (priv->entry, priv->changed_id);
|
|
- priv->changed_id = 0;
|
|
- g_signal_handler_disconnect (priv->entry, priv->keypress_id);
|
|
- priv->keypress_id = 0;
|
|
- g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *)&priv->entry);
|
|
- gtk_entry_set_completion (priv->entry, NULL);
|
|
- }
|
|
+ if (priv->queued_request)
|
|
+ {
|
|
+ g_source_remove (priv->queued_request);
|
|
+ priv->queued_request = 0;
|
|
+ }
|
|
+ if (priv->entry)
|
|
+ {
|
|
+ g_signal_handler_disconnect (priv->entry, priv->changed_id);
|
|
+ priv->changed_id = 0;
|
|
+ g_signal_handler_disconnect (priv->entry, priv->keypress_id);
|
|
+ priv->keypress_id = 0;
|
|
+ g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *)&priv->entry);
|
|
+ gtk_entry_set_completion (priv->entry, NULL);
|
|
+ }
|
|
|
|
priv->entry = entry;
|
|
|
|
- if (entry) {
|
|
- guint id = g_signal_connect (entry, "changed", G_CALLBACK (entry_changed), completion);
|
|
- priv->changed_id = id;
|
|
+ if (entry)
|
|
+ {
|
|
+ guint id = g_signal_connect (entry, "changed",
|
|
+ G_CALLBACK (entry_changed), completion);
|
|
+ priv->changed_id = id;
|
|
|
|
- id = g_signal_connect (entry, "key-press-event", G_CALLBACK (entry_keypress), completion);
|
|
- priv->keypress_id = id;
|
|
+ id = g_signal_connect (entry, "key-press-event",
|
|
+ G_CALLBACK (entry_keypress), completion);
|
|
+ priv->keypress_id = id;
|
|
|
|
- g_object_add_weak_pointer (G_OBJECT (entry), (gpointer *)&priv->entry);
|
|
+ g_object_add_weak_pointer (G_OBJECT (entry), (gpointer *)&priv->entry);
|
|
|
|
- gtk_entry_set_completion (entry, GTK_ENTRY_COMPLETION (completion));
|
|
- }
|
|
+ gtk_entry_set_completion (entry, GTK_ENTRY_COMPLETION (completion));
|
|
+ }
|
|
}
|
|
|
|
static GtkListStore *
|
|
@@ -525,37 +571,38 @@ get_initial_model (void)
|
|
G_TYPE_STRING);
|
|
|
|
gint i;
|
|
- for (i = 0; i < locations->len; ++i) {
|
|
- CcTimezoneLocation * loc = g_ptr_array_index (locations, i);
|
|
- GtkTreeIter iter;
|
|
- gtk_list_store_append (store, &iter);
|
|
+ for (i = 0; i < locations->len; ++i)
|
|
+ {
|
|
+ CcTimezoneLocation * loc = g_ptr_array_index (locations, i);
|
|
+ GtkTreeIter iter;
|
|
+ gtk_list_store_append (store, &iter);
|
|
|
|
- gchar * zone;
|
|
- gchar * country;
|
|
- gchar * en_name; // FIXME: need something better for non-English locales
|
|
- gdouble longitude;
|
|
- gdouble latitude;
|
|
- g_object_get (loc, "zone", &zone, "country", &country, "en_name", &en_name,
|
|
- "longitude", &longitude, "latitude", &latitude,
|
|
- NULL);
|
|
+ gchar * zone;
|
|
+ gchar * country;
|
|
+ gchar * en_name; // FIXME: need something better for non-English locales
|
|
+ gdouble longitude;
|
|
+ gdouble latitude;
|
|
+ g_object_get (loc, "zone", &zone, "country", &country, "en_name", &en_name,
|
|
+ "longitude", &longitude, "latitude", &latitude,
|
|
+ NULL);
|
|
|
|
- gchar * longitude_s = g_strdup_printf ("%f", longitude);
|
|
- gchar * latitude_s= g_strdup_printf ("%f", latitude);
|
|
+ gchar * longitude_s = g_strdup_printf ("%f", longitude);
|
|
+ gchar * latitude_s= g_strdup_printf ("%f", latitude);
|
|
|
|
- gtk_list_store_set (store, &iter,
|
|
- CC_TIMEZONE_COMPLETION_ZONE, NULL,
|
|
- CC_TIMEZONE_COMPLETION_NAME, en_name,
|
|
- CC_TIMEZONE_COMPLETION_COUNTRY, country,
|
|
- CC_TIMEZONE_COMPLETION_LONGITUDE, longitude_s,
|
|
- CC_TIMEZONE_COMPLETION_LATITUDE, latitude_s,
|
|
- -1);
|
|
+ gtk_list_store_set (store, &iter,
|
|
+ CC_TIMEZONE_COMPLETION_ZONE, NULL,
|
|
+ CC_TIMEZONE_COMPLETION_NAME, en_name,
|
|
+ CC_TIMEZONE_COMPLETION_COUNTRY, country,
|
|
+ CC_TIMEZONE_COMPLETION_LONGITUDE, longitude_s,
|
|
+ CC_TIMEZONE_COMPLETION_LATITUDE, latitude_s,
|
|
+ -1);
|
|
|
|
- g_free (latitude_s);
|
|
- g_free (longitude_s);
|
|
- g_free (en_name);
|
|
- g_free (country);
|
|
- g_free (zone);
|
|
- }
|
|
+ g_free (latitude_s);
|
|
+ g_free (longitude_s);
|
|
+ g_free (en_name);
|
|
+ g_free (country);
|
|
+ g_free (zone);
|
|
+ }
|
|
|
|
GtkTreeIter iter;
|
|
gtk_list_store_append (store, &iter);
|
|
@@ -581,13 +628,14 @@ data_func (GtkCellLayout *cell_layout, GtkCellRenderer *cell,
|
|
-1);
|
|
|
|
gchar * user_name;
|
|
- if (country == NULL || country[0] == 0) {
|
|
- user_name = g_strdup (name);
|
|
- } else if (admin1 == NULL || admin1[0] == 0) {
|
|
- user_name = g_strdup_printf ("%s <small>(%s)</small>", name, country);
|
|
- } else {
|
|
- user_name = g_strdup_printf ("%s <small>(%s, %s)</small>", name, admin1, country);
|
|
- }
|
|
+ if (country == NULL || country[0] == 0)
|
|
+ {
|
|
+ user_name = g_strdup (name);
|
|
+ } else if (admin1 == NULL || admin1[0] == 0) {
|
|
+ user_name = g_strdup_printf ("%s <small>(%s)</small>", name, country);
|
|
+ } else {
|
|
+ user_name = g_strdup_printf ("%s <small>(%s, %s)</small>", name, admin1, country);
|
|
+ }
|
|
|
|
g_object_set (G_OBJECT (cell), "markup", user_name, NULL);
|
|
}
|
|
@@ -641,49 +689,57 @@ cc_timezone_completion_dispose (GObject * object)
|
|
CcTimezoneCompletion * completion = CC_TIMEZONE_COMPLETION (object);
|
|
CcTimezoneCompletionPrivate * priv = completion->priv;
|
|
|
|
- if (priv->changed_id) {
|
|
- if (priv->entry)
|
|
- g_signal_handler_disconnect (priv->entry, priv->changed_id);
|
|
- priv->changed_id = 0;
|
|
- }
|
|
+ if (priv->changed_id)
|
|
+ {
|
|
+ if (priv->entry)
|
|
+ g_signal_handler_disconnect (priv->entry, priv->changed_id);
|
|
+ priv->changed_id = 0;
|
|
+ }
|
|
|
|
- if (priv->keypress_id) {
|
|
- if (priv->entry)
|
|
- g_signal_handler_disconnect (priv->entry, priv->keypress_id);
|
|
- priv->keypress_id = 0;
|
|
- }
|
|
+ if (priv->keypress_id)
|
|
+ {
|
|
+ if (priv->entry)
|
|
+ g_signal_handler_disconnect (priv->entry, priv->keypress_id);
|
|
+ priv->keypress_id = 0;
|
|
+ }
|
|
|
|
- if (priv->entry != NULL) {
|
|
- gtk_entry_set_completion (priv->entry, NULL);
|
|
- g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *)&priv->entry);
|
|
- priv->entry = NULL;
|
|
- }
|
|
+ if (priv->entry != NULL)
|
|
+ {
|
|
+ gtk_entry_set_completion (priv->entry, NULL);
|
|
+ g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *)&priv->entry);
|
|
+ priv->entry = NULL;
|
|
+ }
|
|
|
|
- if (priv->initial_model != NULL) {
|
|
- g_object_unref (G_OBJECT (priv->initial_model));
|
|
- priv->initial_model = NULL;
|
|
- }
|
|
+ if (priv->initial_model != NULL)
|
|
+ {
|
|
+ g_object_unref (G_OBJECT (priv->initial_model));
|
|
+ priv->initial_model = NULL;
|
|
+ }
|
|
|
|
- if (priv->queued_request) {
|
|
- g_source_remove (priv->queued_request);
|
|
- priv->queued_request = 0;
|
|
- }
|
|
+ if (priv->queued_request)
|
|
+ {
|
|
+ g_source_remove (priv->queued_request);
|
|
+ priv->queued_request = 0;
|
|
+ }
|
|
|
|
- if (priv->cancel != NULL) {
|
|
- g_cancellable_cancel (priv->cancel);
|
|
- g_object_unref (priv->cancel);
|
|
- priv->cancel = NULL;
|
|
- }
|
|
+ if (priv->cancel != NULL)
|
|
+ {
|
|
+ g_cancellable_cancel (priv->cancel);
|
|
+ g_object_unref (priv->cancel);
|
|
+ priv->cancel = NULL;
|
|
+ }
|
|
|
|
- if (priv->request_text != NULL) {
|
|
- g_free (priv->request_text);
|
|
- priv->request_text = NULL;
|
|
- }
|
|
+ if (priv->request_text != NULL)
|
|
+ {
|
|
+ g_free (priv->request_text);
|
|
+ priv->request_text = NULL;
|
|
+ }
|
|
|
|
- if (priv->request_table != NULL) {
|
|
- g_hash_table_destroy (priv->request_table);
|
|
- priv->request_table = NULL;
|
|
- }
|
|
+ if (priv->request_table != NULL)
|
|
+ {
|
|
+ g_hash_table_destroy (priv->request_table);
|
|
+ priv->request_table = NULL;
|
|
+ }
|
|
|
|
return;
|
|
}
|
|
diff --git a/src/tz.c b/src/tz.c
|
|
index 2aa10ca..969119a 100644
|
|
--- a/src/tz.c
|
|
+++ b/src/tz.c
|
|
@@ -50,16 +50,16 @@ G_DEFINE_TYPE (CcTimezoneLocation, cc_timezone_location, G_TYPE_OBJECT)
|
|
|
|
struct _CcTimezoneLocationPrivate
|
|
{
|
|
- gchar *country;
|
|
- gchar *full_country;
|
|
- gchar *en_name;
|
|
- gchar *state;
|
|
- gdouble latitude;
|
|
- gdouble longitude;
|
|
- gchar *zone;
|
|
- gchar *comment;
|
|
+ gchar *country;
|
|
+ gchar *full_country;
|
|
+ gchar *en_name;
|
|
+ gchar *state;
|
|
+ gdouble latitude;
|
|
+ gdouble longitude;
|
|
+ gchar *zone;
|
|
+ gchar *comment;
|
|
|
|
- gdouble dist; /* distance to clicked point for comparison */
|
|
+ gdouble dist; /* distance to clicked point for comparison */
|
|
};
|
|
|
|
enum {
|
|
@@ -82,8 +82,7 @@ cc_timezone_location_get_property (GObject *object,
|
|
GParamSpec *pspec)
|
|
{
|
|
CcTimezoneLocationPrivate *priv = CC_TIMEZONE_LOCATION (object)->priv;
|
|
- switch (property_id)
|
|
- {
|
|
+ switch (property_id) {
|
|
case PROP_COUNTRY:
|
|
g_value_set_string (value, priv->country);
|
|
break;
|
|
@@ -123,8 +122,7 @@ cc_timezone_location_set_property (GObject *object,
|
|
GParamSpec *pspec)
|
|
{
|
|
CcTimezoneLocationPrivate *priv = CC_TIMEZONE_LOCATION (object)->priv;
|
|
- switch (property_id)
|
|
- {
|
|
+ switch (property_id) {
|
|
case PROP_COUNTRY:
|
|
priv->country = g_value_get_string(value);
|
|
break;
|
|
@@ -162,31 +160,31 @@ cc_timezone_location_dispose (GObject *object)
|
|
{
|
|
CcTimezoneLocationPrivate *priv = CC_TIMEZONE_LOCATION (object)->priv;
|
|
|
|
- if (priv->country)
|
|
+ if (priv->country)
|
|
{
|
|
g_free (priv->country);
|
|
priv->country = NULL;
|
|
}
|
|
|
|
- if (priv->full_country)
|
|
+ if (priv->full_country)
|
|
{
|
|
g_free (priv->full_country);
|
|
priv->full_country = NULL;
|
|
}
|
|
|
|
- if (priv->state)
|
|
+ if (priv->state)
|
|
{
|
|
g_free (priv->state);
|
|
priv->state = NULL;
|
|
}
|
|
|
|
- if (priv->zone)
|
|
+ if (priv->zone)
|
|
{
|
|
g_free (priv->zone);
|
|
priv->zone = NULL;
|
|
}
|
|
|
|
- if (priv->comment)
|
|
+ if (priv->comment)
|
|
{
|
|
g_free (priv->comment);
|
|
priv->comment = NULL;
|
|
@@ -304,19 +302,20 @@ void parse_file (const char * filename,
|
|
FILE *fh = fopen (filename, "r");
|
|
char buf[4096];
|
|
|
|
- if (!fh) {
|
|
+ if (!fh)
|
|
+ {
|
|
g_warning ("Could not open *%s*\n", filename);
|
|
fclose (fh);
|
|
return;
|
|
- }
|
|
+ }
|
|
|
|
- while (fgets (buf, sizeof(buf), fh))
|
|
- {
|
|
+ while (fgets (buf, sizeof(buf), fh))
|
|
+ {
|
|
if (*buf == '#') continue;
|
|
|
|
g_strchomp (buf);
|
|
func (g_strsplit (buf,"\t", ncolumns), user_data);
|
|
- }
|
|
+ }
|
|
|
|
fclose (fh);
|
|
}
|
|
@@ -438,22 +437,25 @@ tz_load_db (void)
|
|
char buf[4096];
|
|
|
|
tz_data_file = tz_data_file_get ("TZ_DATA_FILE", TZ_DATA_FILE);
|
|
- if (!tz_data_file) {
|
|
+ if (!tz_data_file)
|
|
+ {
|
|
g_warning ("Could not get the TimeZone data file name");
|
|
return NULL;
|
|
- }
|
|
+ }
|
|
|
|
admin1_file = tz_data_file_get ("ADMIN1_FILE", ADMIN1_FILE);
|
|
- if (!admin1_file) {
|
|
+ if (!admin1_file)
|
|
+ {
|
|
g_warning ("Could not get the admin1 data file name");
|
|
return NULL;
|
|
- }
|
|
+ }
|
|
|
|
country_file = tz_data_file_get ("COUNTRY_FILE", COUNTRY_FILE);
|
|
- if (!country_file) {
|
|
+ if (!country_file)
|
|
+ {
|
|
g_warning ("Could not get the country data file name");
|
|
return NULL;
|
|
- }
|
|
+ }
|
|
|
|
GHashTable *stateHash = g_hash_table_new_full (g_str_hash,
|
|
g_str_equal, g_free, g_free);
|
|
@@ -491,9 +493,9 @@ tz_load_db (void)
|
|
void
|
|
tz_db_free (TzDB *db)
|
|
{
|
|
- g_ptr_array_foreach (db->locations, (GFunc) g_object_unref, NULL);
|
|
- g_ptr_array_free (db->locations, TRUE);
|
|
- g_free (db);
|
|
+ g_ptr_array_foreach (db->locations, (GFunc) g_object_unref, NULL);
|
|
+ g_ptr_array_free (db->locations, TRUE);
|
|
+ g_free (db);
|
|
}
|
|
|
|
static gint
|
|
@@ -548,103 +550,103 @@ convert_latitude_to_y (gdouble latitude, gdouble map_height)
|
|
GPtrArray *
|
|
tz_get_locations (TzDB *db)
|
|
{
|
|
- return db->locations;
|
|
+ return db->locations;
|
|
}
|
|
|
|
-glong
|
|
+ glong
|
|
tz_location_get_utc_offset (CcTimezoneLocation *loc)
|
|
{
|
|
- TzInfo *tz_info;
|
|
- glong offset;
|
|
+ TzInfo *tz_info;
|
|
+ glong offset;
|
|
|
|
- tz_info = tz_info_from_location (loc);
|
|
- offset = tz_info->utc_offset;
|
|
- tz_info_free (tz_info);
|
|
- return offset;
|
|
+ tz_info = tz_info_from_location (loc);
|
|
+ offset = tz_info->utc_offset;
|
|
+ tz_info_free (tz_info);
|
|
+ return offset;
|
|
}
|
|
|
|
gint
|
|
tz_location_set_locally (CcTimezoneLocation *loc)
|
|
{
|
|
- time_t curtime;
|
|
- struct tm *curzone;
|
|
- gboolean is_dst = FALSE;
|
|
- gint correction = 0;
|
|
+ time_t curtime;
|
|
+ struct tm *curzone;
|
|
+ gboolean is_dst = FALSE;
|
|
+ gint correction = 0;
|
|
|
|
- g_return_val_if_fail (loc != NULL, 0);
|
|
- g_return_val_if_fail (loc->priv->zone != NULL, 0);
|
|
-
|
|
- curtime = time (NULL);
|
|
- curzone = localtime (&curtime);
|
|
- is_dst = curzone->tm_isdst;
|
|
+ g_return_val_if_fail (loc != NULL, 0);
|
|
+ g_return_val_if_fail (loc->priv->zone != NULL, 0);
|
|
|
|
- setenv ("TZ", loc->priv->zone, 1);
|
|
+ curtime = time (NULL);
|
|
+ curzone = localtime (&curtime);
|
|
+ is_dst = curzone->tm_isdst;
|
|
+
|
|
+ setenv ("TZ", loc->priv->zone, 1);
|
|
#if 0
|
|
- curtime = time (NULL);
|
|
- curzone = localtime (&curtime);
|
|
+ curtime = time (NULL);
|
|
+ curzone = localtime (&curtime);
|
|
|
|
- if (!is_dst && curzone->tm_isdst) {
|
|
- correction = (60 * 60);
|
|
- }
|
|
- else if (is_dst && !curzone->tm_isdst) {
|
|
- correction = 0;
|
|
- }
|
|
+ if (!is_dst && curzone->tm_isdst) {
|
|
+ correction = (60 * 60);
|
|
+ }
|
|
+ else if (is_dst && !curzone->tm_isdst) {
|
|
+ correction = 0;
|
|
+ }
|
|
#endif
|
|
|
|
- return correction;
|
|
+ return correction;
|
|
}
|
|
|
|
-TzInfo *
|
|
+ TzInfo *
|
|
tz_info_from_location (CcTimezoneLocation *loc)
|
|
{
|
|
- TzInfo *tzinfo;
|
|
- time_t curtime;
|
|
- struct tm *curzone;
|
|
-
|
|
- g_return_val_if_fail (loc != NULL, NULL);
|
|
- g_return_val_if_fail (loc->priv->zone != NULL, NULL);
|
|
-
|
|
- setenv ("TZ", loc->priv->zone, 1);
|
|
-
|
|
+ TzInfo *tzinfo;
|
|
+ time_t curtime;
|
|
+ struct tm *curzone;
|
|
+
|
|
+ g_return_val_if_fail (loc != NULL, NULL);
|
|
+ g_return_val_if_fail (loc->priv->zone != NULL, NULL);
|
|
+
|
|
+ setenv ("TZ", loc->priv->zone, 1);
|
|
+
|
|
#if 0
|
|
- tzset ();
|
|
+ tzset ();
|
|
#endif
|
|
- tzinfo = g_new0 (TzInfo, 1);
|
|
+ tzinfo = g_new0 (TzInfo, 1);
|
|
|
|
- curtime = time (NULL);
|
|
- curzone = localtime (&curtime);
|
|
+ curtime = time (NULL);
|
|
+ curzone = localtime (&curtime);
|
|
|
|
#ifndef __sun
|
|
- /* Currently this solution doesnt seem to work - I get that */
|
|
- /* America/Phoenix uses daylight savings, which is wrong */
|
|
- tzinfo->tzname_normal = g_strdup (curzone->tm_zone);
|
|
- if (curzone->tm_isdst)
|
|
- tzinfo->tzname_daylight =
|
|
- g_strdup (&curzone->tm_zone[curzone->tm_isdst]);
|
|
- else
|
|
- tzinfo->tzname_daylight = NULL;
|
|
+ /* Currently this solution doesnt seem to work - I get that */
|
|
+ /* America/Phoenix uses daylight savings, which is wrong */
|
|
+ tzinfo->tzname_normal = g_strdup (curzone->tm_zone);
|
|
+ if (curzone->tm_isdst)
|
|
+ tzinfo->tzname_daylight =
|
|
+ g_strdup (&curzone->tm_zone[curzone->tm_isdst]);
|
|
+ else
|
|
+ tzinfo->tzname_daylight = NULL;
|
|
|
|
- tzinfo->utc_offset = curzone->tm_gmtoff;
|
|
+ tzinfo->utc_offset = curzone->tm_gmtoff;
|
|
#else
|
|
- tzinfo->tzname_normal = NULL;
|
|
- tzinfo->tzname_daylight = NULL;
|
|
- tzinfo->utc_offset = 0;
|
|
+ tzinfo->tzname_normal = NULL;
|
|
+ tzinfo->tzname_daylight = NULL;
|
|
+ tzinfo->utc_offset = 0;
|
|
#endif
|
|
|
|
- tzinfo->daylight = curzone->tm_isdst;
|
|
-
|
|
- return tzinfo;
|
|
+ tzinfo->daylight = curzone->tm_isdst;
|
|
+
|
|
+ return tzinfo;
|
|
}
|
|
|
|
|
|
-void
|
|
+ void
|
|
tz_info_free (TzInfo *tzinfo)
|
|
{
|
|
- g_return_if_fail (tzinfo != NULL);
|
|
-
|
|
- if (tzinfo->tzname_normal) g_free (tzinfo->tzname_normal);
|
|
- if (tzinfo->tzname_daylight) g_free (tzinfo->tzname_daylight);
|
|
- g_free (tzinfo);
|
|
+ g_return_if_fail (tzinfo != NULL);
|
|
+
|
|
+ if (tzinfo->tzname_normal) g_free (tzinfo->tzname_normal);
|
|
+ if (tzinfo->tzname_daylight) g_free (tzinfo->tzname_daylight);
|
|
+ g_free (tzinfo);
|
|
}
|
|
|
|
/* ----------------- *
|
|
@@ -665,38 +667,38 @@ tz_data_file_get (gchar *env, gchar *defaultfile)
|
|
static float
|
|
convert_pos (gchar *pos, int digits)
|
|
{
|
|
- gchar whole[10];
|
|
- gchar *fraction;
|
|
- gint i;
|
|
- float t1, t2;
|
|
-
|
|
- if (!pos || strlen(pos) < 4 || digits > 9) return 0.0;
|
|
-
|
|
- for (i = 0; i < digits + 1; i++) whole[i] = pos[i];
|
|
- whole[i] = '\0';
|
|
- fraction = pos + digits + 1;
|
|
+ gchar whole[10];
|
|
+ gchar *fraction;
|
|
+ gint i;
|
|
+ float t1, t2;
|
|
|
|
- t1 = g_strtod (whole, NULL);
|
|
- t2 = g_strtod (fraction, NULL);
|
|
+ if (!pos || strlen(pos) < 4 || digits > 9) return 0.0;
|
|
|
|
- if (t1 >= 0.0) return t1 + t2/pow (10.0, strlen(fraction));
|
|
- else return t1 - t2/pow (10.0, strlen(fraction));
|
|
+ for (i = 0; i < digits + 1; i++) whole[i] = pos[i];
|
|
+ whole[i] = '\0';
|
|
+ fraction = pos + digits + 1;
|
|
+
|
|
+ t1 = g_strtod (whole, NULL);
|
|
+ t2 = g_strtod (fraction, NULL);
|
|
+
|
|
+ if (t1 >= 0.0) return t1 + t2/pow (10.0, strlen(fraction));
|
|
+ else return t1 - t2/pow (10.0, strlen(fraction));
|
|
}
|
|
#endif
|
|
|
|
-static int
|
|
+ static int
|
|
compare_country_names (const void *a, const void *b)
|
|
{
|
|
- const CcTimezoneLocation *tza = * (CcTimezoneLocation **) a;
|
|
- const CcTimezoneLocation *tzb = * (CcTimezoneLocation **) b;
|
|
-
|
|
- return strcmp (tza->priv->zone, tzb->priv->zone);
|
|
+ const CcTimezoneLocation *tza = * (CcTimezoneLocation **) a;
|
|
+ const CcTimezoneLocation *tzb = * (CcTimezoneLocation **) b;
|
|
+
|
|
+ return strcmp (tza->priv->zone, tzb->priv->zone);
|
|
}
|
|
|
|
|
|
-static void
|
|
+ static void
|
|
sort_locations_by_country (GPtrArray *locations)
|
|
{
|
|
- qsort (locations->pdata, locations->len, sizeof (gpointer),
|
|
- compare_country_names);
|
|
+ qsort (locations->pdata, locations->len, sizeof (gpointer),
|
|
+ compare_country_names);
|
|
}
|
|
--
|
|
1.8.4.2
|
|
|