[gnome-builder] gsettings: make downloads over metered connections configurable



commit 197e48a0cf268aaa966b3bd12eeb989ae5ea5d0e
Author: Christian Hergert <chergert redhat com>
Date:   Mon Apr 24 20:28:01 2017 -0700

    gsettings: make downloads over metered connections configurable
    
    Some people may always be on metered connections, or specifically want to
    download updates while transiently on a metered connection. This allows
    the user to override the setting and do that.
    
    In some ways, I wish we would provide UI flow when the problem exists, but
    this is a stop-gap until we think about how we'd even go about doing that.
    I suspect it's more effort than it's worth.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=781450

 data/gsettings/org.gnome.builder.build.gschema.xml |    5 +++++
 libide/buildsystem/ide-build-stage-transfer.c      |   15 ++++++++++-----
 libide/preferences/ide-preferences-builtin.c       |    3 +++
 3 files changed, 18 insertions(+), 5 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.build.gschema.xml 
b/data/gsettings/org.gnome.builder.build.gschema.xml
index 0a7ce7f..07dc061 100644
--- a/data/gsettings/org.gnome.builder.build.gschema.xml
+++ b/data/gsettings/org.gnome.builder.build.gschema.xml
@@ -6,5 +6,10 @@
       <summary>Build Parallelism</summary>
       <description>Number of workers to use when performing builds. -1 for sensible default. 0 for number of 
CPU.</description>
     </key>
+    <key name="allow-network-when-metered" type="b">
+      <default>false</default>
+      <summary>Allow network when metered</summary>
+      <description>Enable automated transfers upon building such as SDK downloads and dependencies when 
connection is metered.</description>
+    </key>
   </schema>
 </schemalist>
diff --git a/libide/buildsystem/ide-build-stage-transfer.c b/libide/buildsystem/ide-build-stage-transfer.c
index 5722aa0..98b3660 100644
--- a/libide/buildsystem/ide-build-stage-transfer.c
+++ b/libide/buildsystem/ide-build-stage-transfer.c
@@ -98,11 +98,16 @@ ide_build_stage_transfer_execute_async (IdeBuildStage       *stage,
 
       if (g_network_monitor_get_network_metered (monitor))
         {
-          g_task_return_new_error (task,
-                                   IDE_TRANSFER_ERROR,
-                                   IDE_TRANSFER_ERROR_CONNECTION_IS_METERED,
-                                   _("Cannot execute transfer while on metered connection"));
-          IDE_EXIT;
+          g_autoptr(GSettings) settings = g_settings_new ("org.gnome.builder.build");
+
+          if (!g_settings_get_boolean (settings, "allow-network-when-metered"))
+            {
+              g_task_return_new_error (task,
+                                       IDE_TRANSFER_ERROR,
+                                       IDE_TRANSFER_ERROR_CONNECTION_IS_METERED,
+                                       _("Cannot execute transfer while on metered connection"));
+              IDE_EXIT;
+            }
         }
     }
 
diff --git a/libide/preferences/ide-preferences-builtin.c b/libide/preferences/ide-preferences-builtin.c
index 783adf9..7e3d27a 100644
--- a/libide/preferences/ide-preferences-builtin.c
+++ b/libide/preferences/ide-preferences-builtin.c
@@ -388,6 +388,9 @@ ide_preferences_builtin_register_build (IdePreferences *preferences)
   gtk_entry_set_width_chars (GTK_ENTRY (widget), 20);
   g_signal_connect (widget, "input", G_CALLBACK (workers_input), NULL);
   g_signal_connect (widget, "output", G_CALLBACK (workers_output), NULL);
+
+  ide_preferences_add_list_group (preferences, "build", "network", _("Network"), GTK_SELECTION_NONE, 100);
+  ide_preferences_add_switch (preferences, "build", "network", "org.gnome.builder.build", 
"allow-network-when-metered", NULL, NULL, _("Allow downloads over metered connections"), _("Allow the use of 
metered network connections when automatically downloading dependencies"), NULL, 10);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]