diff options
Diffstat (limited to 'community-testing/gnome-settings-daemon-updates/arch.patch')
-rw-r--r-- | community-testing/gnome-settings-daemon-updates/arch.patch | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/community-testing/gnome-settings-daemon-updates/arch.patch b/community-testing/gnome-settings-daemon-updates/arch.patch deleted file mode 100644 index df70cd9f8..000000000 --- a/community-testing/gnome-settings-daemon-updates/arch.patch +++ /dev/null @@ -1,325 +0,0 @@ -diff --git a/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in b/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in -index 9af2718..bb45e48 100644 ---- a/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in -+++ b/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in -@@ -16,7 +16,7 @@ - <_description>Use mobile broadband connections such as GSM and CDMA to check for updates.</_description> - </key> - <key name="auto-download-updates" type="b"> -- <default>true</default> -+ <default>false</default> - <_summary>Automatically download updates in the background without confirmation</_summary> - <_description>Automatically download updates in the background without confirmation. Updates will be auto-downloaded when using wired network connnections, and mobile broadband if 'connection-use-mobile' is enabled.</_description> - </key> -@@ -36,7 +36,7 @@ - <_description>The last time we notified the user about non-critical updates. Value is in seconds since the epoch, or zero for never.</_description> - </key> - <key name="frequency-get-upgrades" type="i"> -- <default>604800</default> -+ <default>0</default> - <_summary>How often to check for distribution upgrades</_summary> - <_description>How often to check for distribution upgrades. Value is in seconds.</_description> - </key> -diff --git a/plugins/updates/Makefile.am b/plugins/updates/Makefile.am -index 81c7179..6fd3534 100644 ---- a/plugins/updates/Makefile.am -+++ b/plugins/updates/Makefile.am -@@ -15,7 +15,9 @@ libupdates_la_SOURCES = \ - gsd-updates-firmware.h \ - gsd-updates-firmware.c \ - gsd-updates-manager.h \ -- gsd-updates-manager.c -+ gsd-updates-manager.c \ -+ gsd-updates-watch.h \ -+ gsd-updates-watch.c - - libupdates_la_CPPFLAGS = \ - -I$(top_srcdir)/gnome-settings-daemon \ -diff --git a/plugins/updates/gsd-updates-manager.c b/plugins/updates/gsd-updates-manager.c -index 95ee1c4..7b26c06 100644 ---- a/plugins/updates/gsd-updates-manager.c -+++ b/plugins/updates/gsd-updates-manager.c -@@ -33,6 +33,7 @@ - #include "gsd-updates-manager.h" - #include "gsd-updates-firmware.h" - #include "gsd-updates-refresh.h" -+#include "gsd-updates-watch.h" - #include "gsd-updates-common.h" - #include "gnome-settings-profile.h" - -@@ -47,6 +48,7 @@ struct GsdUpdatesManagerPrivate - GCancellable *cancellable; - GsdUpdatesRefresh *refresh; - GsdUpdatesFirmware *firmware; -+ GsdUpdatesWatch *watch; - GSettings *settings_proxy; - GSettings *settings_ftp; - GSettings *settings_gsd; -@@ -1360,6 +1362,9 @@ gsd_updates_manager_start (GsdUpdatesManager *manager, - g_signal_connect (manager->priv->refresh, "get-updates", - G_CALLBACK (due_get_updates_cb), manager); - -+ /* watch transaction progress */ -+ manager->priv->watch = gsd_updates_watch_new (); -+ - /* get proxy settings */ - manager->priv->settings_proxy = g_settings_new ("org.gnome.system.proxy"); - g_signal_connect (manager->priv->settings_proxy, "changed", -@@ -1455,6 +1460,7 @@ gsd_updates_manager_stop (GsdUpdatesManager *manager) - g_clear_object (&manager->priv->task); - g_clear_object (&manager->priv->refresh); - g_clear_object (&manager->priv->firmware); -+ g_clear_object (&manager->priv->watch); - g_clear_object (&manager->priv->proxy_session); - g_clear_object (&manager->priv->volume_monitor); - g_clear_object (&manager->priv->cancellable); -diff --git a/plugins/updates/gsd-updates-watch.c b/plugins/updates/gsd-updates-watch.c -new file mode 100644 -index 0000000..d3a0202 ---- /dev/null -+++ b/plugins/updates/gsd-updates-watch.c -@@ -0,0 +1,186 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- -+ * -+ * Copyright (C) 2011-2012 Jonathan Conder <jonno.conder@gmail.com> -+ * -+ * Licensed under the GNU General Public License Version 2 -+ * -+ * 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, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ */ -+ -+#include "config.h" -+ -+#include <unistd.h> -+#include <glib/gi18n.h> -+#include <packagekit-glib2/packagekit.h> -+#include <libnotify/notify.h> -+ -+#include "gsd-updates-watch.h" -+ -+#define GSD_UPDATES_WATCH_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_UPDATES_WATCH, GsdUpdatesWatchPrivate)) -+ -+struct GsdUpdatesWatchPrivate -+{ -+ PkTransactionList *tlist; -+ PkClient *client; -+}; -+ -+G_DEFINE_TYPE (GsdUpdatesWatch, gsd_updates_watch, G_TYPE_OBJECT) -+ -+static void -+on_notification_closed (NotifyNotification *notification, gpointer data) -+{ -+ g_object_unref (notification); -+} -+ -+static void -+gsd_updates_watch_message_cb (PkMessage *item, GsdUpdatesWatch *watch) -+{ -+ NotifyNotification *notification; -+ gchar *details = NULL; -+ const gchar *title, *message; -+ GError *error = NULL; -+ -+ g_return_if_fail (PK_IS_MESSAGE (item)); -+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch)); -+ -+ g_object_get (item, "details", &details, NULL); -+ title = _("More information"); -+ message = details; -+ -+ /* use a better title if available */ -+ if (g_str_has_prefix (details, "<b>")) { -+ gchar *end = g_strstr_len (details, -1, "</b>\n"); -+ if (end != NULL && g_strstr_len (details, end - details, "\n") == NULL) { -+ title = details + 3; -+ *end = '\0'; -+ message = end + 5; -+ } -+ } -+ -+ /* display a notification */ -+ notification = notify_notification_new (title, message, NULL); -+ notify_notification_set_app_name (notification, _("Software Updates")); -+ notify_notification_set_timeout (notification, NOTIFY_EXPIRES_NEVER); -+ notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL); -+ -+ g_signal_connect (notification, "closed", G_CALLBACK (on_notification_closed), NULL); -+ if (!notify_notification_show (notification, &error)) { -+ g_warning ("error: %s", error->message); -+ g_error_free (error); -+ } -+ -+ g_free (details); -+} -+ -+static void -+gsd_updates_watch_adopt_cb (PkClient *client, GAsyncResult *res, GsdUpdatesWatch *watch) -+{ -+ PkResults *results; -+ PkProgress *progress = NULL; -+ guint uid; -+ GPtrArray *array; -+ GError *error = NULL; -+ -+ g_return_if_fail (PK_IS_CLIENT (client)); -+ g_return_if_fail (G_IS_ASYNC_RESULT (res)); -+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch)); -+ -+ results = pk_client_generic_finish (client, res, &error); -+ if (results == NULL) { -+ g_warning ("failed to adopt: %s", error->message); -+ g_error_free (error); -+ goto out; -+ } -+ -+ g_object_get (results, "progress", &progress, NULL); -+ g_object_get (progress, "uid", &uid, NULL); -+ -+ /* only display messages from the same user */ -+ if (uid != getuid ()) { -+ g_printerr ("ignoring messages\n"); -+ goto out; -+ } -+ -+ array = pk_results_get_message_array (results); -+ g_ptr_array_foreach (array, (GFunc) gsd_updates_watch_message_cb, watch); -+ g_ptr_array_unref (array); -+ -+out: -+ if (progress != NULL) { -+ g_object_unref (progress); -+ } -+ if (results != NULL) { -+ g_object_unref (results); -+ } -+} -+ -+static void -+gsd_updates_watch_tlist_added_cb (PkTransactionList *tlist, const gchar *tid, GsdUpdatesWatch *watch) -+{ -+ g_return_if_fail (PK_IS_TRANSACTION_LIST (tlist)); -+ g_return_if_fail (tid != NULL); -+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch)); -+ -+ /* listen for messages */ -+ pk_client_adopt_async (watch->priv->client, tid, NULL, NULL, NULL, -+ (GAsyncReadyCallback) gsd_updates_watch_adopt_cb, watch); -+} -+ -+static void -+gsd_updates_watch_init (GsdUpdatesWatch *watch) -+{ -+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch)); -+ -+ watch->priv = GSD_UPDATES_WATCH_GET_PRIVATE (watch); -+ watch->priv->tlist = pk_transaction_list_new (); -+ watch->priv->client = pk_client_new (); -+ -+ g_signal_connect (watch->priv->tlist, "added", -+ G_CALLBACK (gsd_updates_watch_tlist_added_cb), watch); -+} -+ -+static void -+gsd_updates_watch_finalize (GObject *object) -+{ -+ GsdUpdatesWatch *watch; -+ -+ g_return_if_fail (GSD_IS_UPDATES_WATCH (object)); -+ -+ watch = GSD_UPDATES_WATCH (object); -+ g_return_if_fail (watch->priv != NULL); -+ -+ if (watch->priv->tlist != NULL) { -+ g_object_unref (watch->priv->tlist); -+ } -+ if (watch->priv->client != NULL) { -+ g_object_unref (watch->priv->client); -+ } -+ -+ G_OBJECT_CLASS (gsd_updates_watch_parent_class)->finalize (object); -+} -+ -+GsdUpdatesWatch * -+gsd_updates_watch_new (void) -+{ -+ return GSD_UPDATES_WATCH (g_object_new (GSD_TYPE_UPDATES_WATCH, NULL)); -+} -+ -+static void -+gsd_updates_watch_class_init (GsdUpdatesWatchClass *klass) -+{ -+ GObjectClass *object_class = G_OBJECT_CLASS (klass); -+ object_class->finalize = gsd_updates_watch_finalize; -+ g_type_class_add_private (klass, sizeof (GsdUpdatesWatchPrivate)); -+} -diff --git a/plugins/updates/gsd-updates-watch.h b/plugins/updates/gsd-updates-watch.h -new file mode 100644 -index 0000000..439464f ---- /dev/null -+++ b/plugins/updates/gsd-updates-watch.h -@@ -0,0 +1,52 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- -+ * -+ * Copyright (C) 2011-2012 Jonathan Conder <jonno.conder@gmail.com> -+ * -+ * Licensed under the GNU General Public License Version 2 -+ * -+ * 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, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ */ -+ -+#ifndef __GSD_UPDATES_WATCH_H -+#define __GSD_UPDATES_WATCH_H -+ -+#include <glib-object.h> -+ -+G_BEGIN_DECLS -+ -+#define GSD_TYPE_UPDATES_WATCH (gsd_updates_watch_get_type ()) -+#define GSD_UPDATES_WATCH(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_TYPE_UPDATES_WATCH, GsdUpdatesWatch)) -+#define GSD_UPDATES_WATCH_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSD_TYPE_UPDATES_WATCH, GsdUpdatesWatchClass)) -+#define GSD_IS_UPDATES_WATCH(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_TYPE_UPDATES_WATCH)) -+ -+typedef struct GsdUpdatesWatchPrivate GsdUpdatesWatchPrivate; -+ -+typedef struct -+{ -+ GObject parent; -+ GsdUpdatesWatchPrivate *priv; -+} GsdUpdatesWatch; -+ -+typedef struct -+{ -+ GObjectClass parent_class; -+} GsdUpdatesWatchClass; -+ -+GType gsd_updates_watch_get_type (void); -+GsdUpdatesWatch *gsd_updates_watch_new (void); -+ -+G_END_DECLS -+ -+#endif /* __GSD_UPDATES_WATCH_H */ |