datetime: make dialog instant apply

This commit is contained in:
William Jon McCann 2011-01-06 18:18:59 -05:00
parent 1d5309973d
commit 15a0ad5fad
2 changed files with 55 additions and 50 deletions

View file

@ -255,6 +255,10 @@ set_time_cb (CcDateTimePanel *self,
{
g_warning ("Could not set system time: %s", error->message);
}
else
{
update_time (self);
}
}
static void
@ -280,14 +284,41 @@ set_using_ntp_cb (CcDateTimePanel *self,
}
static void
apply_button_clicked_cb (GtkButton *button,
CcDateTimePanel *self)
queue_set_datetime (CcDateTimePanel *self)
{
time_t unixtime;
/* for now just do it */
unixtime = g_date_time_to_unix (self->priv->date);
set_system_time_async (unixtime, (GFunc) set_time_cb, self, NULL);
}
static void
queue_set_ntp (CcDateTimePanel *self)
{
CcDateTimePanelPrivate *priv = self->priv;
gboolean using_ntp;
/* for now just do it */
using_ntp = gtk_switch_get_active (GTK_SWITCH (W("network_time_switch")));
set_using_ntp_async (using_ntp, (GFunc) set_using_ntp_cb, self, NULL);
}
static void
queue_set_timezone (CcDateTimePanel *self)
{
/* for now just do it */
if (self->priv->current_location)
{
set_system_timezone_async (self->priv->current_location->zone, (GFunc) set_timezone_cb, self, NULL);
}
}
static void
change_date (CcDateTimePanel *self)
{
CcDateTimePanelPrivate *priv = self->priv;
guint mon, y, d;
time_t unixtime;
GDateTime *old_date;
gboolean using_ntp;
old_date = priv->date;
@ -300,18 +331,7 @@ apply_button_clicked_cb (GtkButton *button,
g_date_time_get_minute (old_date),
g_date_time_get_second (old_date));
g_date_time_unref (old_date);
unixtime = g_date_time_to_unix (priv->date);
set_system_time_async (unixtime, (GFunc) set_time_cb, self, NULL);
if (priv->current_location)
{
set_system_timezone_async (priv->current_location->zone, (GFunc) set_timezone_cb, self, NULL);
}
using_ntp = gtk_switch_get_active (GTK_SWITCH (W("network_time_switch")));
set_using_ntp_async (using_ntp, (GFunc) set_using_ntp_cb, self, NULL);
queue_set_datetime (self);
}
static void
@ -386,6 +406,8 @@ location_changed_cb (CcTimezoneMap *map,
while (gtk_tree_model_iter_next (model, &iter));
g_strfreev (split);
queue_set_timezone (self);
}
static void
@ -560,6 +582,13 @@ update_widget_state_for_ntp (CcDateTimePanel *panel,
gtk_widget_set_sensitive (W("table2"), !using_ntp);
}
static void
day_changed (GtkWidget *widget,
CcDateTimePanel *panel)
{
change_date (panel);
}
static void
month_year_changed (GtkWidget *widget,
CcDateTimePanel *panel)
@ -582,6 +611,8 @@ month_year_changed (GtkWidget *widget,
if (gtk_spin_button_get_value_as_int (day_spin) > num_days)
gtk_spin_button_set_value (day_spin, num_days);
change_date (panel);
}
static void
@ -622,14 +653,16 @@ change_time (GtkButton *button,
g_date_time_unref (old_date);
update_time (panel);
queue_set_datetime (panel);
}
static void
change_ntp (GObject *gobject,
GParamSpec *pspec,
gpointer user_data)
CcDateTimePanel *self)
{
update_widget_state_for_ntp (user_data, gtk_switch_get_active (GTK_SWITCH (gobject)));
update_widget_state_for_ntp (self, gtk_switch_get_active (GTK_SWITCH (gobject)));
queue_set_ntp (self);
}
static gboolean
@ -717,6 +750,8 @@ cc_date_time_panel_init (CcDateTimePanel *self)
num_days + 1, 1, 10, 1);
gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (W ("day-spinbutton")),
adjustment);
g_signal_connect (G_OBJECT (W("day-spinbutton")), "value-changed",
G_CALLBACK (day_changed), self);
adjustment = (GtkAdjustment*) gtk_adjustment_new (g_date_time_get_year (priv->date),
G_MINDOUBLE, G_MAXDOUBLE, 1,
@ -752,12 +787,6 @@ cc_date_time_panel_init (CcDateTimePanel *self)
update_time (self);
g_signal_connect ((GtkWidget*) gtk_builder_get_object (priv->builder,
"button_apply"),
"clicked",
G_CALLBACK (apply_button_clicked_cb),
self);
get_system_timezone_async ((GetTimezoneFunc) get_timezone_cb, self, NULL);
priv->locations = (GtkTreeModel*) gtk_builder_get_object (priv->builder,

View file

@ -431,30 +431,6 @@
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button_apply">
<property name="label">gtk-apply</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>