465
get_current_is_fallback (CcInfoPanel *self)
470
gboolean is_fallback;
473
if (!(reply = g_dbus_connection_call_sync (self->priv->session_bus,
474
"org.gnome.SessionManager",
475
"/org/gnome/SessionManager",
476
"org.freedesktop.DBus.Properties",
478
g_variant_new ("(ss)", "org.gnome.SessionManager", "session-name"),
479
(GVariantType*)"(v)",
484
g_warning ("Failed to get fallback mode: %s", error->message);
485
g_clear_error (&error);
489
g_variant_get (reply, "(v)", &reply_str);
490
is_fallback = g_strcmp0 ("gnome-fallback", g_variant_get_string (reply_str, NULL)) == 0;
491
g_variant_unref (reply_str);
492
g_variant_unref (reply);
498
cc_info_panel_get_property (GObject *object,
506
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
511
cc_info_panel_set_property (GObject *object,
519
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
524
463
cc_info_panel_dispose (GObject *object)
558
497
CcInfoPanelPrivate *priv = CC_INFO_PANEL (object)->priv;
560
if (priv->cancellable != NULL)
562
g_cancellable_cancel (priv->cancellable);
563
priv->cancellable = NULL;
499
g_clear_pointer (&priv->cancellable, g_cancellable_cancel);
565
500
g_free (priv->gnome_version);
566
501
g_free (priv->gnome_date);
567
502
g_free (priv->gnome_distributor);
569
if (priv->hostnamed_proxy != NULL)
571
g_object_unref (priv->hostnamed_proxy);
572
priv->hostnamed_proxy = NULL;
575
if (priv->media_settings != NULL)
577
g_object_unref (priv->media_settings);
578
priv->media_settings = NULL;
581
if (priv->session_settings != NULL)
583
g_object_unref (priv->session_settings);
584
priv->session_settings = NULL;
504
g_clear_object (&priv->hostnamed_proxy);
505
g_clear_object (&priv->media_settings);
587
507
G_OBJECT_CLASS (cc_info_panel_parent_class)->finalize (object);
832
750
gtk_tree_path_free (path);
836
switch_fallback_get_mapping (GValue *value,
842
setting = g_variant_get_string (variant, NULL);
843
g_value_set_boolean (value, strcmp (setting, "gnome") != 0);
848
toggle_fallback_warning_label (CcInfoPanel *self,
854
widget = WID ("graphics_logout_warning_label");
856
if (self->priv->is_fallback)
857
text = _("The next login will attempt to use the standard experience.");
859
text = _("The next login will use the fallback mode intended for unsupported graphics hardware.");
861
gtk_label_set_text (GTK_LABEL (widget), text);
864
gtk_widget_show (widget);
866
gtk_widget_hide (widget);
870
switch_fallback_set_mapping (const GValue *value,
871
const GVariantType *expected_type,
874
CcInfoPanel *self = data;
877
is_set = g_value_get_boolean (value);
878
if (is_set != self->priv->is_fallback)
879
toggle_fallback_warning_label (self, TRUE);
881
toggle_fallback_warning_label (self, FALSE);
883
return g_variant_new_string (is_set ? "gnome-fallback" : "gnome");
887
info_panel_setup_graphics (CcInfoPanel *self)
893
widget = WID ("graphics_driver_label");
894
gtk_label_set_markup (GTK_LABEL (widget), self->priv->graphics_data->hardware_string);
896
self->priv->is_fallback = get_current_is_fallback (self);
897
if (self->priv->is_fallback)
899
/* translators: The hardware is not able to run GNOME 3's
900
* shell, so we use the GNOME "Fallback" session */
901
text = g_strdup (C_("Experience", "Fallback"));
905
/* translators: The hardware is able to run GNOME 3's
906
* shell, also called "Standard" experience */
907
text = g_strdup (C_("Experience", "Standard"));
909
widget = WID ("graphics_experience_label");
910
gtk_label_set_markup (GTK_LABEL (widget), text ? text : "");
913
widget = WID ("graphics_fallback_switch_box");
914
sw = GTK_SWITCH (gtk_switch_new ());
915
g_settings_bind_with_mapping (self->priv->session_settings, KEY_SESSION_NAME,
917
switch_fallback_get_mapping,
918
switch_fallback_set_mapping, self, NULL);
919
gtk_box_pack_start (GTK_BOX (widget), GTK_WIDGET (sw), FALSE, FALSE, 0);
920
gtk_widget_show_all (GTK_WIDGET (sw));
921
widget = WID ("fallback-label");
922
gtk_label_set_mnemonic_widget (GTK_LABEL (widget), GTK_WIDGET (sw));
926
754
url_nav_callback (WebKitWebView *web_view,
927
755
WebKitWebFrame *frame,
1008
846
info_panel_setup_default_app (CcInfoPanel *self,
1009
847
DefaultAppData *data,
1010
848
guint left_attach,
1013
guint bottom_attach)
1015
851
GtkWidget *button;
1017
853
GtkWidget *label;
1019
table = WID ("default_apps_table");
855
grid = WID ("default_apps_grid");
1021
857
button = gtk_app_chooser_button_new (data->content_type);
1022
858
g_object_set_data (G_OBJECT (button), "cc-default-app-data", data);
1024
860
gtk_app_chooser_button_set_show_default_item (GTK_APP_CHOOSER_BUTTON (button), TRUE);
1025
gtk_table_attach (GTK_TABLE (table), button,
1026
left_attach, right_attach,
1027
top_attach, bottom_attach, GTK_FILL, 0, 0, 0);
861
gtk_grid_attach (GTK_GRID (grid), button, left_attach, top_attach,
1028
863
g_signal_connect (G_OBJECT (button), "changed",
1029
864
G_CALLBACK (default_app_changed), self);
1030
865
gtk_widget_show (button);
1839
get_pk_version_property (GDBusProxy *pk_proxy,
1840
const char *property,
1845
v = g_dbus_proxy_get_cached_property (pk_proxy, property);
1849
g_variant_get (v, "u", retval);
1850
g_variant_unref (v);
1855
got_pk_proxy_cb (GObject *source_object,
1859
GError *error = NULL;
1860
guint32 major, minor, micro;
1862
self->priv->pk_proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
1864
if (self->priv->pk_proxy == NULL)
1866
g_warning ("Unable to get PackageKit proxy object: %s", error->message);
1867
g_error_free (error);
1868
self->priv->updates_state = PK_NOT_AVAILABLE;
1869
refresh_update_button (self);
1873
if (!get_pk_version_property(self->priv->pk_proxy, "VersionMajor", &major) ||
1874
!get_pk_version_property(self->priv->pk_proxy, "VersionMinor", &minor) ||
1875
!get_pk_version_property(self->priv->pk_proxy, "VersionMicro", µ))
1877
g_warning ("Unable to get PackageKit version");
1878
g_clear_object (&self->priv->pk_proxy);
1879
self->priv->updates_state = PK_NOT_AVAILABLE;
1880
refresh_update_button (self);
1884
if (major != 0 || minor != 8)
1886
g_warning ("PackageKit version %u.%u.%u not supported", major, minor, micro);
1887
g_clear_object (&self->priv->pk_proxy);
1888
self->priv->updates_state = PK_NOT_AVAILABLE;
1889
refresh_update_button (self);
1893
g_signal_connect (self->priv->pk_proxy,
1895
G_CALLBACK (on_pk_signal),
1897
refresh_updates (self);
1902
info_panel_setup_updates (CcInfoPanel *self)
1904
self->priv->updates_state = CHECKING_UPDATES;
1905
refresh_update_button (self);
1907
g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
1908
G_DBUS_PROXY_FLAGS_NONE,
1910
"org.freedesktop.PackageKit",
1911
"/org/freedesktop/PackageKit",
1912
"org.freedesktop.PackageKit",
1914
(GAsyncReadyCallback) got_pk_proxy_cb,
2009
1919
cc_info_panel_init (CcInfoPanel *self)
2016
1926
self->priv->builder = gtk_builder_new ();
2018
self->priv->session_settings = g_settings_new (GNOME_SESSION_MANAGER_SCHEMA);
2019
1928
self->priv->media_settings = g_settings_new (MEDIA_HANDLING_SCHEMA);
2021
1930
self->priv->session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
2023
1932
g_assert (self->priv->session_bus);
2025
self->priv->pk_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
2026
G_DBUS_PROXY_FLAGS_NONE,
2028
"org.freedesktop.PackageKit",
2029
"/org/freedesktop/PackageKit",
2030
"org.freedesktop.PackageKit",
2033
if (self->priv->pk_proxy == NULL)
2035
g_warning ("Unable to get PackageKit proxy object");
2036
self->priv->updates_state = PK_NOT_AVAILABLE;
2041
guint32 major, minor, micro;
2043
v = g_dbus_proxy_get_cached_property (self->priv->pk_proxy, "VersionMajor");
2044
g_variant_get (v, "u", &major);
2045
g_variant_unref (v);
2046
v = g_dbus_proxy_get_cached_property (self->priv->pk_proxy, "VersionMinor");
2047
g_variant_get (v, "u", &minor);
2048
g_variant_unref (v);
2049
v = g_dbus_proxy_get_cached_property (self->priv->pk_proxy, "VersionMicro");
2050
g_variant_get (v, "u", µ);
2051
g_variant_unref (v);
2053
if (major != 0 || minor != 8)
2055
g_warning ("PackageKit version %u.%u.%u not supported", major, minor, micro);
2056
g_clear_object (&self->priv->pk_proxy);
2057
self->priv->updates_state = PK_NOT_AVAILABLE;
2061
g_signal_connect (self->priv->pk_proxy,
2063
G_CALLBACK (on_pk_signal),
2065
refresh_updates (self);
2069
gtk_builder_add_from_file (self->priv->builder,
2070
GNOMECC_UI_DIR "/info.ui",
1934
if (gtk_builder_add_from_file (self->priv->builder,
1935
GNOMECC_UI_DIR "/info.ui",
2075
1938
g_warning ("Could not load interface file: %s", error->message);
2076
1939
g_error_free (error);
2082
1945
widget = WID ("updates_button");
2083
1946
g_signal_connect (widget, "clicked", G_CALLBACK (on_updates_button_clicked), self);
1948
info_panel_setup_updates (self);
2085
1949
info_panel_setup_selector (self);
2086
1950
info_panel_setup_overview (self);
2087
1951
info_panel_setup_default_apps (self);
2088
1952
info_panel_setup_media (self);
2089
info_panel_setup_graphics (self);
2090
1953
if (!g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity"))
2091
1954
info_panel_setup_notice (self);