[gnome-initial-setup] Add a privacy page



commit 6b6db174f1c1f0ce7f9317c64577389d7de3893f
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Feb 17 22:24:31 2015 -0500

    Add a privacy page
    
    This page offers to opt out of location services and
    automatic bug reporting, both of which may cause privacy
    concerns.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=744245

 configure.ac                                       |    4 +-
 gnome-initial-setup/Makefile.am                    |    1 +
 gnome-initial-setup/gnome-initial-setup.c          |    2 +
 gnome-initial-setup/pages/Makefile.am              |    1 +
 gnome-initial-setup/pages/privacy/Makefile.am      |   27 ++
 .../pages/privacy/gis-privacy-page.c               |  269 ++++++++++++++++++++
 .../pages/privacy/gis-privacy-page.h               |   57 ++++
 .../pages/privacy/gis-privacy-page.ui              |  131 ++++++++++
 .../pages/privacy/privacy.gresource.xml            |    6 +
 9 files changed, 497 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 3765eaf..877d98e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -48,7 +48,8 @@ PKG_CHECK_MODULES(INITIAL_SETUP,
                   rest-0.7
                   json-glib-1.0
                  libsecret-1
-                  pwquality)
+                  pwquality
+                  webkitgtk-3.0)
 
 GEOCLUE_DBUS_INTERFACE_XML=`pkg-config --variable=dbus_interface geoclue-2.0`
 if test "x$GEOCLUE_DBUS_INTERFACE_XML" = "x"; then
@@ -131,6 +132,7 @@ gnome-initial-setup/pages/keyboard/Makefile
 gnome-initial-setup/pages/eulas/Makefile
 gnome-initial-setup/pages/network/Makefile
 gnome-initial-setup/pages/timezone/Makefile
+gnome-initial-setup/pages/privacy/Makefile
 gnome-initial-setup/pages/goa/Makefile
 gnome-initial-setup/pages/account/Makefile
 gnome-initial-setup/pages/password/Makefile
diff --git a/gnome-initial-setup/Makefile.am b/gnome-initial-setup/Makefile.am
index 6f7b47b..e3430fb 100644
--- a/gnome-initial-setup/Makefile.am
+++ b/gnome-initial-setup/Makefile.am
@@ -37,6 +37,7 @@ gnome_initial_setup_LDADD =   \
        pages/eulas/libgiseulas.la \
        pages/network/libgisnetwork.la \
        pages/timezone/libgistimezone.la \
+       pages/privacy/libgisprivacy.la \
        pages/goa/libgisgoa.la \
        pages/account/libgisaccount.la \
        pages/password/libgispassword.la \
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 5f28852..75fedca 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -42,6 +42,7 @@
 #include "pages/eulas/gis-eula-pages.h"
 #include "pages/network/gis-network-page.h"
 #include "pages/timezone/gis-timezone-page.h"
+#include "pages/privacy/gis-privacy-page.h"
 #include "pages/goa/gis-goa-page.h"
 #include "pages/account/gis-account-pages.h"
 #include "pages/password/gis-password-page.h"
@@ -67,6 +68,7 @@ static PageData page_table[] = {
   PAGE (network,  FALSE),
   PAGE (timezone, TRUE),
   PAGE (goa,      FALSE),
+  PAGE (privacy,  FALSE),
   PAGE (account,  TRUE),
   PAGE (password, TRUE),
   PAGE (summary,  FALSE),
diff --git a/gnome-initial-setup/pages/Makefile.am b/gnome-initial-setup/pages/Makefile.am
index 4f2d5a0..95618bc 100644
--- a/gnome-initial-setup/pages/Makefile.am
+++ b/gnome-initial-setup/pages/Makefile.am
@@ -6,6 +6,7 @@ SUBDIRS = \
        eulas \
        network \
        timezone \
+       privacy \
        goa \
        account \
        password \
diff --git a/gnome-initial-setup/pages/privacy/Makefile.am b/gnome-initial-setup/pages/privacy/Makefile.am
new file mode 100644
index 0000000..5cd79f3
--- /dev/null
+++ b/gnome-initial-setup/pages/privacy/Makefile.am
@@ -0,0 +1,27 @@
+
+noinst_LTLIBRARIES = libgisprivacy.la
+
+AM_CPPFLAGS = \
+       -I"$(top_srcdir)" \
+       -I"$(top_srcdir)/gnome-initial-setup" \
+       -I"$(top_builddir)" \
+       -DDATADIR=\""$(datadir)"\"
+
+BUILT_SOURCES =
+
+resource_files = $(shell glib-compile-resources --sourcedir=$(srcdir) --generate-dependencies 
$(srcdir)/privacy.gresource.xml)
+privacy-resources.c: privacy.gresource.xml $(resource_files)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $<
+privacy-resources.h: privacy.gresource.xml $(resource_files)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-header $<
+BUILT_SOURCES += privacy-resources.c privacy-resources.h
+
+libgisprivacy_la_SOURCES =                             \
+       gis-privacy-page.c gis-privacy-page.h           \
+       $(BUILT_SOURCES)
+
+libgisprivacy_la_CFLAGS = $(INITIAL_SETUP_CFLAGS)
+libgisprivacy_la_LIBADD = $(INITIAL_SETUP_LIBS)
+libgisprivacy_la_LDFLAGS = -export_dynamic -avoid-version -module -no-undefined
+
+EXTRA_DIST = privacy.gresource.xml $(resource_files)
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.c 
b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
new file mode 100644
index 0000000..49baa01
--- /dev/null
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
@@ -0,0 +1,269 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright (C) 2015 Red Hat
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Written by:
+ *     Matthias Clasen <mclasen redhat com>
+ */
+
+/* Privacy page {{{1 */
+
+#define PAGE_ID "privacy"
+
+#include "config.h"
+#include "privacy-resources.h"
+#include "gis-privacy-page.h"
+
+#include <webkit/webkit.h>
+
+#include <locale.h>
+#include <gtk/gtk.h>
+
+struct _GisPrivacyPagePrivate
+{
+  GtkWidget *location_switch;
+  GtkWidget *reporting_switch;
+  GtkWidget *reporting_label;
+  GtkWidget *privacy_policy_label;
+  GSettings *location_settings;
+  GSettings *privacy_settings;
+};
+typedef struct _GisPrivacyPagePrivate GisPrivacyPagePrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (GisPrivacyPage, gis_privacy_page, GIS_TYPE_PAGE);
+
+static char *
+get_item (const char *buffer, const char *name)
+{
+  char *label, *start, *end, *result;
+  char end_char;
+
+  result = NULL;
+  start = NULL;
+  end = NULL;
+  label = g_strconcat (name, "=", NULL);
+  if ((start = strstr (buffer, label)) != NULL)
+    {
+      start += strlen (label);
+      end_char = '\n';
+      if (*start == '"')
+        {
+          start++;
+          end_char = '"';
+        }
+
+      end = strchr (start, end_char);
+    }
+
+    if (start != NULL && end != NULL)
+      {
+        result = g_strndup (start, end - start);
+      }
+
+  g_free (label);
+
+  return result;
+}
+
+static void
+update_os_data (GisPrivacyPage *page)
+{
+  GisPrivacyPagePrivate *priv = gis_privacy_page_get_instance_private (page);
+  char *buffer;
+  char *name;
+  char *privacy_policy;
+  char *text;
+
+  name = NULL;
+  privacy_policy = NULL;
+
+  if (g_file_get_contents ("/etc/os-release", &buffer, NULL, NULL))
+    {
+      name = get_item (buffer, "NAME");
+      privacy_policy = get_item (buffer, "PRIVACY_POLICY");
+      g_free (buffer);
+    }
+
+  if (!name)
+    name = g_strdup ("GNOME");
+
+  /* Translators: the parameter here is the name of a distribution,
+   * like "Fedora" or "Ubuntu". It falls back to "GNOME 3" if we can't
+   * detect any distribution.
+   */
+  text = g_strdup_printf (_("Sending reports of technical problems helps us to improve %s. Reports are sent 
anonymously and are scrubbed of personal data."), name);
+  gtk_label_set_label (GTK_LABEL (priv->reporting_label), text);
+  g_free (text);
+
+  if (privacy_policy)
+    {
+      text = g_strdup_printf ("<a href='%s'>%s</a>", privacy_policy, _("Privacy Policy"));
+      gtk_label_set_label (GTK_LABEL (priv->privacy_policy_label), text);
+      g_free (text);
+    }
+  else
+    gtk_widget_hide (priv->privacy_policy_label);
+
+  g_free (name);
+  g_free (privacy_policy);
+}
+
+static void
+gis_privacy_page_constructed (GObject *object)
+{
+  GisPrivacyPage *page = GIS_PRIVACY_PAGE (object);
+  GisPrivacyPagePrivate *priv = gis_privacy_page_get_instance_private (page);
+
+  G_OBJECT_CLASS (gis_privacy_page_parent_class)->constructed (object);
+
+  priv->location_settings = g_settings_new ("org.gnome.system.location");
+  priv->privacy_settings = g_settings_new ("org.gnome.desktop.privacy");
+
+  update_os_data (page);
+  gtk_switch_set_active (GTK_SWITCH (priv->location_switch), TRUE);
+  gtk_switch_set_active (GTK_SWITCH (priv->reporting_switch), TRUE);
+
+  gis_page_set_complete (GIS_PAGE (page), TRUE);
+}
+
+static void
+gis_privacy_page_dispose (GObject *object)
+{
+  GisPrivacyPage *page = GIS_PRIVACY_PAGE (object);
+  GisPrivacyPagePrivate *priv = gis_privacy_page_get_instance_private (page);
+
+  g_clear_object (&priv->location_settings);
+  g_clear_object (&priv->privacy_settings);
+
+  G_OBJECT_CLASS (gis_privacy_page_parent_class)->dispose (object);
+}
+
+static gboolean
+gis_privacy_page_apply (GisPage *gis_page,
+                        GCancellable *cancellable)
+{
+  GisPrivacyPage *page = GIS_PRIVACY_PAGE (gis_page);
+  GisPrivacyPagePrivate *priv = gis_privacy_page_get_instance_private (page);
+  gboolean active;
+
+  active = gtk_switch_get_active (GTK_SWITCH (priv->location_switch));
+  g_settings_set_boolean (priv->location_settings, "enabled", active);
+
+  active = gtk_switch_get_active (GTK_SWITCH (priv->reporting_switch));
+  g_settings_set_boolean (priv->privacy_settings, "report-technical-problems", active);
+
+  return FALSE;
+}
+
+static void
+notify_progress_cb (GObject *object, GParamSpec *pspec, gpointer user_data)
+{
+  GtkWidget *progress_bar = user_data;
+  WebKitWebView *web_view = WEBKIT_WEB_VIEW (object);
+  gdouble progress;
+
+  progress = webkit_web_view_get_progress (web_view);
+
+  if (progress == 1.0)
+    gtk_widget_hide (progress_bar);
+  else
+    gtk_widget_show (progress_bar);
+
+  gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), progress);
+}
+
+static void
+activate_link (GtkLabel       *label,
+               const gchar    *uri,
+               GisPrivacyPage *page)
+{
+  GtkWidget *dialog;
+  GtkWidget *overlay;
+  GtkWidget *scrolled_window;
+  GtkWidget *view;
+  GtkWidget *progress_bar;
+
+  dialog = gtk_dialog_new_with_buttons (_("Privacy Policy"),
+                                        GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (page))),
+                                        GTK_DIALOG_MODAL
+                                        | GTK_DIALOG_DESTROY_WITH_PARENT
+                                        | GTK_DIALOG_USE_HEADER_BAR,
+                                        NULL);
+
+  overlay = gtk_overlay_new ();
+  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_set_size_request (scrolled_window, 600, 500);
+  gtk_widget_set_hexpand (scrolled_window, TRUE);
+  gtk_widget_set_vexpand (scrolled_window, TRUE);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+                                  GTK_POLICY_AUTOMATIC,
+                                  GTK_POLICY_AUTOMATIC);
+  gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), overlay);
+  gtk_container_add (GTK_CONTAINER (overlay), scrolled_window);
+  progress_bar = gtk_progress_bar_new ();
+  gtk_style_context_add_class (gtk_widget_get_style_context (progress_bar), GTK_STYLE_CLASS_OSD);
+  gtk_widget_set_halign (progress_bar, GTK_ALIGN_FILL);
+  gtk_widget_set_valign (progress_bar, GTK_ALIGN_START);
+  gtk_overlay_add_overlay (GTK_OVERLAY (overlay), progress_bar);
+
+  view = webkit_web_view_new ();
+
+  g_signal_connect (view, "notify::progress",
+                    G_CALLBACK (notify_progress_cb), progress_bar);
+
+  gtk_container_add (GTK_CONTAINER (scrolled_window), view);
+  gtk_widget_show_all (overlay);
+
+  gtk_window_present (GTK_WINDOW (dialog));
+
+  webkit_web_view_load_uri (WEBKIT_WEB_VIEW (view), uri);
+}
+
+static void
+gis_privacy_page_class_init (GisPrivacyPageClass *klass)
+{
+  GisPageClass *page_class = GIS_PAGE_CLASS (klass);
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/initial-setup/gis-privacy-page.ui");
+  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, location_switch);
+  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_switch);
+  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, reporting_label);
+  gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass), GisPrivacyPage, 
privacy_policy_label);
+  gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), activate_link);
+
+  page_class->page_id = PAGE_ID;
+  page_class->apply = gis_privacy_page_apply;
+  object_class->constructed = gis_privacy_page_constructed;
+  object_class->dispose = gis_privacy_page_dispose;
+}
+
+static void
+gis_privacy_page_init (GisPrivacyPage *page)
+{
+  g_resources_register (privacy_get_resource ());
+  gtk_widget_init_template (GTK_WIDGET (page));
+}
+
+void
+gis_prepare_privacy_page (GisDriver *driver)
+{
+  gis_driver_add_page (driver,
+                       g_object_new (GIS_TYPE_PRIVACY_PAGE,
+                                     "driver", driver,
+                                     NULL));
+}
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.h 
b/gnome-initial-setup/pages/privacy/gis-privacy-page.h
new file mode 100644
index 0000000..d814612
--- /dev/null
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.h
@@ -0,0 +1,57 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright (C) 2015 Red Hat
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Written by:
+ *     Matthias Clasen <mclasen redhat com>
+ */
+
+#ifndef __GIS_PRIVACY_PAGE_H__
+#define __GIS_PRIVACY_PAGE_H__
+
+#include <glib-object.h>
+
+#include "gnome-initial-setup.h"
+
+G_BEGIN_DECLS
+
+#define GIS_TYPE_PRIVACY_PAGE               (gis_privacy_page_get_type ())
+#define GIS_PRIVACY_PAGE(obj)                           (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
GIS_TYPE_PRIVACY_PAGE, GisPrivacyPage))
+#define GIS_PRIVACY_PAGE_CLASS(klass)                   (G_TYPE_CHECK_CLASS_CAST ((klass),  
GIS_TYPE_PRIVACY_PAGE, GisPrivacyPageClass))
+#define GIS_IS_PRIVACY_PAGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIS_TYPE_PRIVACY_PAGE))
+#define GIS_IS_PRIVACY_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  GIS_TYPE_PRIVACY_PAGE))
+#define GIS_PRIVACY_PAGE_GET_CLASS(obj)                 (G_TYPE_INSTANCE_GET_CLASS ((obj),  
GIS_TYPE_PRIVACY_PAGE, GisPrivacyPageClass))
+
+typedef struct _GisPrivacyPage        GisPrivacyPage;
+typedef struct _GisPrivacyPageClass   GisPrivacyPageClass;
+
+struct _GisPrivacyPage
+{
+  GisPage parent;
+};
+
+struct _GisPrivacyPageClass
+{
+  GisPageClass parent_class;
+};
+
+GType gis_privacy_page_get_type (void);
+
+void gis_prepare_privacy_page (GisDriver *driver);
+
+G_END_DECLS
+
+#endif /* __GIS_PRIVACY_PAGE_H__ */
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.ui 
b/gnome-initial-setup/pages/privacy/gis-privacy-page.ui
new file mode 100644
index 0000000..4a3ebee
--- /dev/null
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.ui
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <template class="GisPrivacyPage" parent="GisPage">
+    <property name="visible">True</property>
+    <child>
+      <object class="GtkBox" id="box">
+        <property name="visible">True</property>
+        <property name="halign">center</property>
+        <property name="valign">fill</property>
+        <property name="orientation">vertical</property>
+       <child>
+          <object class="GtkImage" id="image1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="pixel_size">96</property>
+            <property name="icon_name">preferences-system-privacy-symbolic</property>
+            <property name="icon_size">1</property>
+            <property name="margin_top">40</property>
+            <style>
+              <class name="dim-label" />
+            </style>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel" id="title">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">center</property>
+            <property name="valign">start</property>
+            <property name="margin_top">18</property>
+            <property name="label" translatable="yes">Privacy</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+              <attribute name="scale" value="1.8"/>
+            </attributes>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="valign">start</property>
+            <property name="margin_top">6</property>
+            <property name="label" translatable="yes">Privacy controls can be changed at any time from 
Settings.</property>
+            <property name="justify">center</property>
+            <property name="wrap">True</property>
+            <property name="max-width-chars">50</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkBox">
+            <property name="visible">True</property>
+            <property name="margin-top">40</property>
+            <property name="orientation">horizontal</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes">Location Services</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+            </child>
+            <child>
+              <object class="GtkSwitch" id="location_switch">
+                <property name="halign">end</property>
+                <property name="visible">True</property>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="visible">True</property>
+            <property name="margin-top">10</property>
+            <property name="xalign">0</property>
+            <property name="max-width-chars">50</property>
+            <property name="wrap">True</property>
+            <property name="label" translatable="yes">Allows applications to determine your geographical 
location. An indication is shown when location services are in use.</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkBox">
+            <property name="visible">True</property>
+            <property name="margin-top">20</property>
+            <property name="orientation">horizontal</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="halign">start</property>
+                <property name="label" translatable="yes">Automatic Problem Reporting</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+            </child>
+            <child>
+              <object class="GtkSwitch" id="reporting_switch">
+                <property name="visible">True</property>
+                <property name="halign">end</property>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel" id="reporting_label">
+            <property name="visible">True</property>
+            <property name="margin-top">10</property>
+            <property name="xalign">0</property>
+            <property name="max-width-chars">50</property>
+            <property name="wrap">True</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel" id="privacy_policy_label">
+            <property name="visible">True</property>
+            <property name="margin-top">10</property>
+            <property name="xalign">0</property>
+            <property name="halign">start</property>
+            <property name="use-markup">True</property>
+            <signal name="activate-link" handler="activate_link"/>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>
diff --git a/gnome-initial-setup/pages/privacy/privacy.gresource.xml 
b/gnome-initial-setup/pages/privacy/privacy.gresource.xml
new file mode 100644
index 0000000..be75b34
--- /dev/null
+++ b/gnome-initial-setup/pages/privacy/privacy.gresource.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/initial-setup">
+    <file preprocess="xml-stripblanks" alias="gis-privacy-page.ui">gis-privacy-page.ui</file>
+  </gresource>
+</gresources>


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