power: Remove Wi-Fi and WWAN "power saving" toggles
It's pretty clear from their experiences on smartphones that our users know that Wi-Fi and other wireless technologies use enough battery that turning them off is a power saving move. The switches and text were also pretty confusing as we would be turning "off" the devices to turn "on" the power saving.
This commit is contained in:
parent
a2cfd2b341
commit
2f2ea3aed6
3 changed files with 0 additions and 245 deletions
|
@ -27,10 +27,6 @@
|
|||
#include <gio/gdesktopappinfo.h>
|
||||
#include <handy.h>
|
||||
|
||||
#ifdef HAVE_NETWORK_MANAGER
|
||||
#include <NetworkManager.h>
|
||||
#endif
|
||||
|
||||
#include "shell/cc-object-storage.h"
|
||||
#include "list-box-helper.h"
|
||||
#include "cc-battery-row.h"
|
||||
|
@ -86,8 +82,6 @@ struct _CcPowerPanel
|
|||
GtkListBoxRow *kbd_brightness_row;
|
||||
CcBrightnessScale *kbd_brightness_scale;
|
||||
GtkSizeGroup *level_sizegroup;
|
||||
GtkListBoxRow *mobile_row;
|
||||
GtkSwitch *mobile_switch;
|
||||
HdyComboRow *power_button_row;
|
||||
GtkListBox *power_profile_listbox;
|
||||
GtkListBox *power_profile_info_listbox;
|
||||
|
@ -102,8 +96,6 @@ struct _CcPowerPanel
|
|||
GtkComboBox *suspend_on_ac_delay_combo;
|
||||
GtkLabel *suspend_on_ac_label;
|
||||
GtkSwitch *suspend_on_ac_switch;
|
||||
GtkListBoxRow *wifi_row;
|
||||
GtkSwitch *wifi_switch;
|
||||
|
||||
GSettings *gsd_settings;
|
||||
GSettings *session_settings;
|
||||
|
@ -124,10 +116,6 @@ struct _CcPowerPanel
|
|||
CcPowerProfileRow *power_profiles_row[NUM_CC_POWER_PROFILES];
|
||||
gboolean power_profiles_in_update;
|
||||
gboolean has_performance_degraded;
|
||||
|
||||
#ifdef HAVE_NETWORK_MANAGER
|
||||
NMClient *nm_client;
|
||||
#endif
|
||||
};
|
||||
|
||||
CC_PANEL_REGISTER (CcPowerPanel, cc_power_panel)
|
||||
|
@ -154,9 +142,6 @@ cc_power_panel_dispose (GObject *object)
|
|||
g_clear_object (&self->bt_properties);
|
||||
g_clear_object (&self->iio_proxy);
|
||||
g_clear_object (&self->power_profiles_proxy);
|
||||
#ifdef HAVE_NETWORK_MANAGER
|
||||
g_clear_object (&self->nm_client);
|
||||
#endif
|
||||
if (self->iio_proxy_watch_id != 0)
|
||||
g_bus_unwatch_name (self->iio_proxy_watch_id);
|
||||
self->iio_proxy_watch_id = 0;
|
||||
|
@ -729,184 +714,6 @@ bt_powered_state_changed (CcPowerPanel *self)
|
|||
g_signal_handlers_unblock_by_func (self->bt_switch, bt_switch_changed_cb, self);
|
||||
}
|
||||
|
||||
#ifdef HAVE_NETWORK_MANAGER
|
||||
static gboolean
|
||||
has_wifi_devices (NMClient *client)
|
||||
{
|
||||
const GPtrArray *devices;
|
||||
NMDevice *device;
|
||||
gint i;
|
||||
|
||||
if (!nm_client_get_nm_running (client))
|
||||
return FALSE;
|
||||
|
||||
devices = nm_client_get_devices (client);
|
||||
if (devices == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < devices->len; i++)
|
||||
{
|
||||
device = g_ptr_array_index (devices, i);
|
||||
switch (nm_device_get_device_type (device))
|
||||
{
|
||||
case NM_DEVICE_TYPE_WIFI:
|
||||
return TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
wifi_switch_changed_cb (CcPowerPanel *self)
|
||||
{
|
||||
gboolean enabled;
|
||||
|
||||
enabled = gtk_switch_get_active (self->wifi_switch);
|
||||
g_debug ("Setting wifi %s", enabled ? "enabled" : "disabled");
|
||||
nm_client_wireless_set_enabled (self->nm_client, enabled);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
has_mobile_devices (NMClient *client)
|
||||
{
|
||||
const GPtrArray *devices;
|
||||
NMDevice *device;
|
||||
gint i;
|
||||
|
||||
if (!nm_client_get_nm_running (client))
|
||||
return FALSE;
|
||||
|
||||
devices = nm_client_get_devices (client);
|
||||
if (devices == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < devices->len; i++)
|
||||
{
|
||||
device = g_ptr_array_index (devices, i);
|
||||
switch (nm_device_get_device_type (device))
|
||||
{
|
||||
case NM_DEVICE_TYPE_MODEM:
|
||||
return TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
mobile_switch_changed_cb (CcPowerPanel *self)
|
||||
{
|
||||
gboolean enabled;
|
||||
|
||||
enabled = gtk_switch_get_active (self->mobile_switch);
|
||||
g_debug ("Setting wwan %s", enabled ? "enabled" : "disabled");
|
||||
nm_client_wwan_set_enabled (self->nm_client, enabled);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_client_state_changed (CcPowerPanel *self)
|
||||
{
|
||||
gboolean visible;
|
||||
gboolean active;
|
||||
gboolean sensitive;
|
||||
|
||||
visible = has_wifi_devices (self->nm_client);
|
||||
active = nm_client_networking_get_enabled (self->nm_client) &&
|
||||
nm_client_wireless_get_enabled (self->nm_client) &&
|
||||
nm_client_wireless_hardware_get_enabled (self->nm_client);
|
||||
sensitive = nm_client_networking_get_enabled (self->nm_client) &&
|
||||
nm_client_wireless_hardware_get_enabled (self->nm_client);
|
||||
|
||||
g_debug ("wifi state changed to %s", active ? "enabled" : "disabled");
|
||||
|
||||
g_signal_handlers_block_by_func (self->wifi_switch, wifi_switch_changed_cb, self);
|
||||
gtk_switch_set_active (self->wifi_switch, active);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (self->wifi_switch), sensitive);
|
||||
gtk_widget_set_visible (GTK_WIDGET (self->wifi_row), visible);
|
||||
g_signal_handlers_unblock_by_func (self->wifi_switch, wifi_switch_changed_cb, self);
|
||||
|
||||
visible = has_mobile_devices (self->nm_client);
|
||||
|
||||
/* Set the switch active, if wwan is enabled. */
|
||||
active = nm_client_networking_get_enabled (self->nm_client) &&
|
||||
(nm_client_wwan_get_enabled (self->nm_client) &&
|
||||
nm_client_wwan_hardware_get_enabled (self->nm_client));
|
||||
sensitive = nm_client_networking_get_enabled (self->nm_client) &&
|
||||
nm_client_wwan_hardware_get_enabled (self->nm_client);
|
||||
|
||||
g_debug ("mobile state changed to %s", active ? "enabled" : "disabled");
|
||||
|
||||
g_signal_handlers_block_by_func (self->mobile_switch, mobile_switch_changed_cb, self);
|
||||
gtk_switch_set_active (self->mobile_switch, active);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (self->mobile_switch), sensitive);
|
||||
gtk_widget_set_visible (GTK_WIDGET (self->mobile_row), visible);
|
||||
g_signal_handlers_unblock_by_func (self->mobile_switch, mobile_switch_changed_cb, self);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_device_changed (CcPowerPanel *self)
|
||||
{
|
||||
gtk_widget_set_visible (GTK_WIDGET (self->wifi_row), has_wifi_devices (self->nm_client));
|
||||
gtk_widget_set_visible (GTK_WIDGET (self->mobile_row), has_mobile_devices (self->nm_client));
|
||||
}
|
||||
|
||||
static void
|
||||
setup_nm_client (CcPowerPanel *self,
|
||||
NMClient *client)
|
||||
{
|
||||
self->nm_client = client;
|
||||
|
||||
g_signal_connect_object (self->nm_client, "notify",
|
||||
G_CALLBACK (nm_client_state_changed), self, G_CONNECT_SWAPPED);
|
||||
g_signal_connect_object (self->nm_client, "device-added",
|
||||
G_CALLBACK (nm_device_changed), self, G_CONNECT_SWAPPED);
|
||||
g_signal_connect_object (self->nm_client, "device-removed",
|
||||
G_CALLBACK (nm_device_changed), self, G_CONNECT_SWAPPED);
|
||||
|
||||
nm_client_state_changed (self);
|
||||
nm_device_changed (self);
|
||||
}
|
||||
|
||||
static void
|
||||
nm_client_ready_cb (GObject *source_object,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
CcPowerPanel *self;
|
||||
NMClient *client;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
client = nm_client_new_finish (res, &error);
|
||||
if (!client)
|
||||
{
|
||||
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
{
|
||||
g_warning ("Failed to create NetworkManager client: %s",
|
||||
error->message);
|
||||
|
||||
self = user_data;
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (self->wifi_row), FALSE);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (self->mobile_row), FALSE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
self = user_data;
|
||||
|
||||
/* Setup the client */
|
||||
setup_nm_client (self, client);
|
||||
|
||||
/* Store the object in the cache too */
|
||||
cc_object_storage_add_object (CC_OBJECT_NMCLIENT, client);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static gboolean
|
||||
keynav_failed_cb (CcPowerPanel *self, GtkDirectionType direction, GtkWidget *list)
|
||||
{
|
||||
|
@ -1326,14 +1133,6 @@ setup_power_saving (CcPowerPanel *self)
|
|||
update_automatic_suspend_label (self);
|
||||
}
|
||||
|
||||
#ifdef HAVE_NETWORK_MANAGER
|
||||
/* Create and store a NMClient instance if it doesn't exist yet */
|
||||
if (cc_object_storage_has_object (CC_OBJECT_NMCLIENT))
|
||||
setup_nm_client (self, cc_object_storage_get_object (CC_OBJECT_NMCLIENT));
|
||||
else
|
||||
nm_client_new_async (cc_panel_get_cancellable (CC_PANEL (self)), nm_client_ready_cb, self);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_BLUETOOTH
|
||||
self->bt_rfkill = cc_object_storage_create_dbus_proxy_sync (G_BUS_TYPE_SESSION,
|
||||
G_DBUS_PROXY_FLAGS_NONE,
|
||||
|
@ -1854,8 +1653,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
|
|||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, kbd_brightness_scale);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, level_sizegroup);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, mobile_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, mobile_switch);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_button_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_listbox);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, power_profile_info_listbox);
|
||||
|
@ -1870,8 +1667,6 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
|
|||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_delay_combo);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_label);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_switch);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, wifi_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, wifi_switch);
|
||||
|
||||
gtk_widget_class_bind_template_callback (widget_class, als_switch_changed_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, automatic_suspend_label_mnemonic_activate_cb);
|
||||
|
@ -1880,11 +1675,9 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
|
|||
gtk_widget_class_bind_template_callback (widget_class, has_kbd_brightness_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, blank_screen_row_changed_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, keynav_failed_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, mobile_switch_changed_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, power_button_row_changed_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, power_profiles_row_activated_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, automatic_suspend_row_activated_cb);
|
||||
gtk_widget_class_bind_template_callback (widget_class, wifi_switch_changed_cb);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -237,38 +237,6 @@
|
|||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="HdyActionRow" id="wifi_row">
|
||||
<property name="visible">False</property>
|
||||
<property name="title" translatable="yes">_Wi-Fi</property>
|
||||
<property name="subtitle" translatable="yes">Wi-Fi can be turned off to save power.</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="activatable_widget">wifi_switch</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="wifi_switch">
|
||||
<property name="visible">True</property>
|
||||
<property name="valign">center</property>
|
||||
<signal name="notify::active" handler="wifi_switch_changed_cb" object="CcPowerPanel" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="HdyActionRow" id="mobile_row">
|
||||
<property name="visible">False</property>
|
||||
<property name="title" translatable="yes">_Mobile Broadband</property>
|
||||
<property name="subtitle" translatable="yes">Mobile broadband (LTE, 4G, 3G, etc.) can be turned off to save power.</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="activatable_widget">mobile_switch</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="mobile_switch">
|
||||
<property name="visible">True</property>
|
||||
<property name="valign">center</property>
|
||||
<signal name="notify::active" handler="mobile_switch_changed_cb" object="CcPowerPanel" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="HdyActionRow" id="bt_row">
|
||||
<property name="visible">False</property>
|
||||
|
@ -337,8 +305,6 @@
|
|||
<widget name="dim_screen_row"/>
|
||||
<widget name="blank_screen_row"/>
|
||||
<widget name="automatic_suspend_row"/>
|
||||
<widget name="wifi_row"/>
|
||||
<widget name="mobile_row"/>
|
||||
<widget name="bt_row"/>
|
||||
<widget name="power_button_row"/>
|
||||
<widget name="battery_percentage_row"/>
|
||||
|
|
|
@ -47,10 +47,6 @@ deps = common_deps + [
|
|||
upower_glib_dep
|
||||
]
|
||||
|
||||
if host_is_linux
|
||||
deps += network_manager_deps
|
||||
endif
|
||||
|
||||
if host_is_linux_not_s390
|
||||
deps += gnome_bluetooth_dep
|
||||
endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue