View | Details | Raw Unified | Return to bug 749453
Collapse All | Expand All

(-)a/panels/datetime/cc-datetime-panel.c (-3 / +35 lines)
Lines 86-91 struct _CcDateTimePanelPrivate Link Here
86
  GCancellable *cancellable;
86
  GCancellable *cancellable;
87
87
88
  GPermission *permission;
88
  GPermission *permission;
89
  GPermission *permission_tz;
89
};
90
};
90
91
91
static void update_time (CcDateTimePanel *self);
92
static void update_time (CcDateTimePanel *self);
Lines 164-169 cc_date_time_panel_dispose (GObject *object) Link Here
164
      priv->permission = NULL;
165
      priv->permission = NULL;
165
    }
166
    }
166
167
168
  if (priv->permission_tz)
169
    {
170
      g_object_unref (priv->permission_tz);
171
      priv->permission_tz = NULL;
172
    }
173
167
  G_OBJECT_CLASS (cc_date_time_panel_parent_class)->dispose (object);
174
  G_OBJECT_CLASS (cc_date_time_panel_parent_class)->dispose (object);
168
}
175
}
169
176
Lines 806-824 on_permission_changed (GPermission *permission, Link Here
806
                       gpointer     data)
813
                       gpointer     data)
807
{
814
{
808
  CcDateTimePanelPrivate *priv = CC_DATE_TIME_PANEL (data)->priv;
815
  CcDateTimePanelPrivate *priv = CC_DATE_TIME_PANEL (data)->priv;
809
  gboolean allowed, using_ntp;
816
  gboolean allowed, allowed_tz, using_ntp;
810
817
811
  allowed = g_permission_get_allowed (permission);
818
  allowed = g_permission_get_allowed (permission);
819
  allowed_tz = priv->permission_tz && g_permission_get_allowed (priv->permission_tz);
812
  using_ntp = gtk_switch_get_active (GTK_SWITCH (W("network_time_switch")));
820
  using_ntp = gtk_switch_get_active (GTK_SWITCH (W("network_time_switch")));
813
821
814
  /* All the widgets but the lock button and the 24h setting */
822
  /* All the widgets but the lock button and the 24h setting */
815
  gtk_widget_set_sensitive (W("map-vbox"), allowed);
823
  gtk_widget_set_sensitive (W("map-vbox"), allowed || allowed_tz);
816
  gtk_widget_set_sensitive (W("hbox2"), allowed);
824
  gtk_widget_set_sensitive (W("hbox2"), allowed);
817
  gtk_widget_set_sensitive (W("alignment2"), allowed);
825
  gtk_widget_set_sensitive (W("alignment2"), allowed);
818
  update_widget_state_for_ntp (data, using_ntp);
826
  update_widget_state_for_ntp (data, using_ntp);
819
}
827
}
820
828
821
static void
829
static void
830
on_permission_tz_changed (GPermission *permission,
831
                          GParamSpec  *pspec,
832
                          gpointer     data)
833
{
834
  CcDateTimePanelPrivate *priv = CC_DATE_TIME_PANEL (data)->priv;
835
  gboolean allowed;
836
837
  allowed = g_permission_get_allowed (permission) || g_permission_get_allowed (priv->permission);
838
839
  gtk_widget_set_sensitive (W("map-vbox"), allowed);
840
}
841
842
static void
822
update_ntp_switch_from_system (CcDateTimePanel *self)
843
update_ntp_switch_from_system (CcDateTimePanel *self)
823
{
844
{
824
  CcDateTimePanelPrivate *priv = self->priv;
845
  CcDateTimePanelPrivate *priv = self->priv;
Lines 1103-1108 cc_date_time_panel_init (CcDateTimePanel *self) Link Here
1103
  g_signal_connect (priv->permission, "notify",
1124
  g_signal_connect (priv->permission, "notify",
1104
                    G_CALLBACK (on_permission_changed), self);
1125
                    G_CALLBACK (on_permission_changed), self);
1105
  on_permission_changed (priv->permission, NULL, self);
1126
  on_permission_changed (priv->permission, NULL, self);
1127
1128
  priv->permission_tz = polkit_permission_new_sync ("org.freedesktop.timedate1.set-timezone", NULL, NULL, NULL);
1129
  if (priv->permission_tz == NULL)
1130
    {
1131
      g_warning ("Your system does not have the '%s' PolicyKit files installed. Please check your installation",
1132
                 "org.freedesktop.timedate1.set-timezone");
1133
      return;
1134
    }
1135
1136
  g_signal_connect (priv->permission_tz, "notify",
1137
                    G_CALLBACK (on_permission_tz_changed), self);
1138
  on_permission_tz_changed (priv->permission_tz, NULL, self);
1106
}
1139
}
1107
1140
1108
void
1141
void
1109
- 

Return to bug 749453