From 44cde00066303e185b615cd1efb0d3bb1ffb0071 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 23 Mar 2011 16:24:34 -0500 Subject: add bevel above location buttons --- data/datetime-dialog.ui | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'data/datetime-dialog.ui') diff --git a/data/datetime-dialog.ui b/data/datetime-dialog.ui index 7545227..ead11d1 100644 --- a/data/datetime-dialog.ui +++ b/data/datetime-dialog.ui @@ -7,11 +7,6 @@ 86400 864000 - - 1.8446744073709552e+19 - 60 - 3600 - False Locations @@ -46,6 +41,17 @@ 0 + + + True + False + + + False + True + 1 + + True @@ -55,7 +61,6 @@ True True True - Add a Location… False @@ -76,7 +81,6 @@ True True True - Remove This Location False @@ -96,7 +100,7 @@ False True - 1 + 2 @@ -112,6 +116,11 @@ + + 1.8446744073709552e+19 + 60 + 3600 + False 5 -- cgit v1.2.3 From e4733095077a4bef45a1572492d5f593574c60f9 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Mon, 28 Mar 2011 15:17:43 -0400 Subject: add missing a11y descriptions --- data/datetime-dialog.ui | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'data/datetime-dialog.ui') diff --git a/data/datetime-dialog.ui b/data/datetime-dialog.ui index ead11d1..6bd7428 100644 --- a/data/datetime-dialog.ui +++ b/data/datetime-dialog.ui @@ -62,6 +62,11 @@ True True False + + + Add a Location… + + True @@ -82,6 +87,11 @@ True True False + + + Remove This Location + + True -- cgit v1.2.3 From 18ea5194b357dbd14dd724eb32013af8031a50be Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Tue, 29 Mar 2011 11:17:52 -0400 Subject: treat locations dialog not as a modal dialog, but rather one that can be dismissed by interacting with the main dialog --- data/datetime-dialog.ui | 1 - src/datetime-prefs-locations.c | 4 +--- src/datetime-prefs-locations.h | 2 +- src/datetime-prefs.c | 20 ++++++++++++++++++-- 4 files changed, 20 insertions(+), 7 deletions(-) (limited to 'data/datetime-dialog.ui') diff --git a/data/datetime-dialog.ui b/data/datetime-dialog.ui index ead11d1..f150765 100644 --- a/data/datetime-dialog.ui +++ b/data/datetime-dialog.ui @@ -10,7 +10,6 @@ False Locations - True 300 200 True diff --git a/src/datetime-prefs-locations.c b/src/datetime-prefs-locations.c index d13f95a..5dd13e8 100644 --- a/src/datetime-prefs-locations.c +++ b/src/datetime-prefs-locations.c @@ -309,7 +309,7 @@ selection_changed (GtkTreeSelection * selection, GtkWidget * remove_button) } GtkWidget * -datetime_setup_locations_dialog (GtkWindow * parent, CcTimezoneMap * map) +datetime_setup_locations_dialog (CcTimezoneMap * map) { GError * error = NULL; GtkBuilder * builder = gtk_builder_new (); @@ -375,8 +375,6 @@ datetime_setup_locations_dialog (GtkWindow * parent, CcTimezoneMap * map) g_object_set_data (G_OBJECT (dlg), "time-id", GINT_TO_POINTER(time_id)); update_times (dlg); - gtk_window_set_transient_for (GTK_WINDOW (dlg), parent); - #undef WIG g_object_unref (conf); diff --git a/src/datetime-prefs-locations.h b/src/datetime-prefs-locations.h index 1760567..e312894 100644 --- a/src/datetime-prefs-locations.h +++ b/src/datetime-prefs-locations.h @@ -28,7 +28,7 @@ with this program. If not, see . G_BEGIN_DECLS -GtkWidget * datetime_setup_locations_dialog (GtkWindow * parent, CcTimezoneMap * map); +GtkWidget * datetime_setup_locations_dialog (CcTimezoneMap * map); G_END_DECLS diff --git a/src/datetime-prefs.c b/src/datetime-prefs.c index fbc88f2..5a6fd91 100644 --- a/src/datetime-prefs.c +++ b/src/datetime-prefs.c @@ -53,6 +53,7 @@ GtkWidget * date_spin = NULL; guint save_time_id = 0; gboolean user_edited_time = FALSE; gboolean changing_time = FALSE; +GtkWidget * loc_dlg = NULL; /* Turns the boolean property into a string gsettings */ static GVariant * @@ -494,11 +495,26 @@ setup_time_spinners (GtkWidget * time, GtkWidget * date) update_spinners (); } +static void +hide_locations () +{ + if (loc_dlg != NULL) + gtk_widget_destroy (loc_dlg); +} + static void show_locations (GtkWidget * button, GtkWidget * dlg) { - GtkWidget * locationsDlg = datetime_setup_locations_dialog (GTK_WINDOW (dlg), tzmap); - gtk_widget_show_all (locationsDlg); + if (loc_dlg == NULL) { + loc_dlg = datetime_setup_locations_dialog (tzmap); + gtk_window_set_transient_for (GTK_WINDOW (loc_dlg), GTK_WINDOW (dlg)); + g_signal_connect (loc_dlg, "destroy", G_CALLBACK (gtk_widget_destroyed), &loc_dlg); + g_signal_connect (dlg, "focus-in-event", G_CALLBACK (hide_locations), NULL); + gtk_widget_show_all (loc_dlg); + } + else { + gtk_window_present_with_time (GTK_WINDOW (loc_dlg), gtk_get_current_event_time ()); + } } static gboolean -- cgit v1.2.3 From 348285a8a64bedf936b5cc36a9e73519c2dde0d2 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Tue, 29 Mar 2011 15:53:18 -0400 Subject: show error icon if user focuses out of location entry when it has an non-location value --- data/datetime-dialog.ui | 4 ++++ src/datetime-prefs-locations.c | 38 +++++++++++++++++++++++++++++++------- 2 files changed, 35 insertions(+), 7 deletions(-) (limited to 'data/datetime-dialog.ui') diff --git a/data/datetime-dialog.ui b/data/datetime-dialog.ui index 80b4fa6..8479482 100644 --- a/data/datetime-dialog.ui +++ b/data/datetime-dialog.ui @@ -123,6 +123,10 @@ + + + + diff --git a/src/datetime-prefs-locations.c b/src/datetime-prefs-locations.c index 6addac3..2862022 100644 --- a/src/datetime-prefs-locations.c +++ b/src/datetime-prefs-locations.c @@ -35,9 +35,11 @@ with this program. If not, see . #define DATETIME_DIALOG_UI_FILE PKGDATADIR "/datetime-dialog.ui" -#define COL_NAME 0 -#define COL_TIME 1 -#define COL_ZONE 2 +#define COL_NAME 0 +#define COL_TIME 1 +#define COL_ZONE 2 +#define COL_VISIBLE_NAME 3 +#define COL_ICON 4 static gboolean update_times (GtkWidget * dlg); static void save_when_idle (GtkWidget * dlg); @@ -90,8 +92,18 @@ handle_edit (GtkCellRendererText * renderer, gchar * path, gchar * new_text, { GtkTreeIter iter; + // Manual user edits are always wrong (unless they are undoing a previous + // edit), so we set the error icon here if needed. Common way to get to + // this code path is to lose entry focus. if (gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (store), &iter, path)) { - gtk_list_store_set (store, &iter, COL_NAME, new_text, -1); + const gchar * name; + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COL_NAME, &name, -1); + gboolean correct = g_strcmp0 (name, new_text) == 0; + + gtk_list_store_set (store, &iter, + COL_VISIBLE_NAME, new_text, + COL_ICON, correct ? NULL : GTK_STOCK_DIALOG_ERROR, + -1); } } @@ -130,7 +142,11 @@ timezone_selected (GtkEntryCompletion * widget, GtkTreeModel * model, GtkListStore * store = GTK_LIST_STORE (g_object_get_data (G_OBJECT (widget), "store")); GtkTreeIter * store_iter = (GtkTreeIter *)g_object_get_data (G_OBJECT (widget), "store_iter"); if (store != NULL && store_iter != NULL) { - gtk_list_store_set (store, store_iter, COL_NAME, name, COL_ZONE, zone, -1); + gtk_list_store_set (store, store_iter, + COL_VISIBLE_NAME, name, + COL_ICON, NULL, + COL_NAME, name, + COL_ZONE, zone, -1); } update_times (dlg); @@ -216,7 +232,11 @@ fill_from_settings (GObject * store, GSettings * conf) split_settings_location (*striter, &zone, &name); gtk_list_store_append (GTK_LIST_STORE (store), &iter); - gtk_list_store_set (GTK_LIST_STORE (store), &iter, COL_NAME, name, COL_ZONE, zone, -1); + gtk_list_store_set (GTK_LIST_STORE (store), &iter, + COL_VISIBLE_NAME, name, + COL_ICON, NULL, + COL_NAME, name, + COL_ZONE, zone, -1); g_free (zone); g_free (name); @@ -342,11 +362,15 @@ datetime_setup_locations_dialog (CcTimezoneMap * map) g_signal_connect (cell, "edited", G_CALLBACK (handle_edit), store); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, _("Location"), cell, - "text", COL_NAME, NULL); + "text", COL_VISIBLE_NAME, NULL); GtkTreeViewColumn * loc_col = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), 0); gtk_tree_view_column_set_expand (loc_col, TRUE); g_object_set_data (G_OBJECT (completion), "name-cell", cell); + cell = gtk_cell_renderer_pixbuf_new (); + gtk_tree_view_column_pack_start (loc_col, cell, FALSE); + gtk_tree_view_column_add_attribute (loc_col, cell, "icon-name", COL_ICON); + cell = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree), -1, _("Time"), cell, -- cgit v1.2.3