From 42fc8277d9a517436ddb4367cd922e8b73a4b632 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 6 Feb 2012 12:11:38 +0000 Subject: handle gtk3 box constructor changes --- src/user-widget.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/user-widget.c b/src/user-widget.c index 937a9eb..8388ec5 100644 --- a/src/user-widget.c +++ b/src/user-widget.c @@ -136,7 +136,7 @@ user_widget_init (UserWidget *self) gtk_misc_set_padding (GTK_MISC(priv->user_image),0, 4.0); priv->user_name = gtk_label_new (""); - priv->container = gtk_hbox_new (FALSE, 0); + priv->container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); priv->tick_icon = gtk_image_new_from_icon_name ("account-logged-in", GTK_ICON_SIZE_MENU); gtk_misc_set_alignment(GTK_MISC(priv->tick_icon), 1.0, 0.5); -- cgit v1.2.3 From 64d649ed43bc2f1635862c8cd9d8fceec898b4eb Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 6 Feb 2012 19:31:44 +0000 Subject: pkclient in place --- configure.ac | 6 +- src/apt-watcher.c | 406 ++---------------------------------------------------- src/apt-watcher.h | 2 +- 3 files changed, 19 insertions(+), 395 deletions(-) diff --git a/configure.ac b/configure.ac index 3e5fa97..52a54b9 100644 --- a/configure.ac +++ b/configure.ac @@ -62,7 +62,8 @@ AS_IF([test "x$with_gtk" = x3], dbus-glib-1 gudev-1.0 gio-unix-2.0 - indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION) + indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION + packagekit-glib2) ], [test "x$with_gtk" = x2], [PKG_CHECK_MODULES(SESSIONSERVICE, dbusmenu-glib-0.4 >= $DBUSMENUGLIB_REQUIRED_VERSION @@ -70,7 +71,8 @@ AS_IF([test "x$with_gtk" = x3], gudev-1.0 dbus-glib-1 gio-unix-2.0 - indicator-0.4 >= $INDICATOR_REQUIRED_VERSION) + indicator-0.4 >= $INDICATOR_REQUIRED_VERSION + packagekit-glib2) ] ) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index 481029a..07b633d 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -17,104 +17,50 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include +// Conor - 6/2/2012 +// Please pull in packagekit's client lib +// using apt-get install --no-install-recommends libpackagekit-glib2-dev +// make sure you don't install package-kit +#define I_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE + #include +#include #include "apt-watcher.h" -#include "apt-transaction.h" +#include "dbus-shared-names.h" static guint watcher_id; struct _AptWatcher { GObject parent_instance; - guint reboot_query; - GCancellable * proxy_cancel; - GDBusProxy * proxy; SessionDbus* session_dbus_interface; DbusmenuMenuitem* apt_item; AptState current_state; - AptTransaction* current_transaction; + PkClient* pkclient; }; - -static void -apt_watcher_on_name_appeared (GDBusConnection *connection, - const gchar *name, - const gchar *name_owner, - gpointer user_data); -static void -apt_watcher_on_name_vanished (GDBusConnection *connection, - const gchar *name, - gpointer user_data); -static void fetch_proxy_cb (GObject * object, - GAsyncResult * res, - gpointer user_data); - -static void apt_watcher_upgrade_system_cb (GObject * obj, - GAsyncResult * res, - gpointer user_data); - - + static void apt_watcher_show_apt_dialog (DbusmenuMenuitem* mi, guint timestamp, gpointer userdata); -static void apt_watcher_signal_cb (GDBusProxy* proxy, - gchar* sender_name, - gchar* signal_name, - GVariant* parameters, - gpointer user_data); -static void apt_watcher_manage_transactions (AptWatcher* self, - gchar* transaction_id); -static gboolean apt_watcher_query_reboot_status (gpointer self); -static void apt_watcher_transaction_state_simulation_update_cb (AptTransaction* trans, - gint update, - gpointer user_data); -static void apt_watcher_transaction_state_real_update_cb (AptTransaction* trans, - gint update, - gpointer user_data); -static gboolean apt_watcher_start_apt_interaction (gpointer data); - G_DEFINE_TYPE (AptWatcher, apt_watcher, G_TYPE_OBJECT); static void apt_watcher_init (AptWatcher *self) { self->current_state = UP_TO_DATE; - self->proxy_cancel = g_cancellable_new(); - self->proxy = NULL; - self->reboot_query = 0; - self->current_transaction = NULL; - g_timeout_add_seconds (60, + self->pkclient = pk_client_new (); + /*g_timeout_add_seconds (60, apt_watcher_start_apt_interaction, - self); -} - -static gboolean -apt_watcher_start_apt_interaction (gpointer data) -{ - g_return_val_if_fail (APT_IS_WATCHER (data), FALSE); - AptWatcher* self = APT_WATCHER (data); - g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - "org.debian.apt", - "/org/debian/apt", - "org.debian.apt", - self->proxy_cancel, - fetch_proxy_cb, - self); - return FALSE; + self); */ } static void apt_watcher_finalize (GObject *object) { g_bus_unwatch_name (watcher_id); - AptWatcher* self = APT_WATCHER (object); + //AptWatcher* self = APT_WATCHER (object); - if (self->proxy != NULL) - g_object_unref (self->proxy); - G_OBJECT_CLASS (apt_watcher_parent_class)->finalize (object); } @@ -125,109 +71,6 @@ apt_watcher_class_init (AptWatcherClass *klass) object_class->finalize = apt_watcher_finalize; } -static void -fetch_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) -{ - GError * error = NULL; - - AptWatcher* self = APT_WATCHER(user_data); - g_return_if_fail(self != NULL); - - GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); - - if (self->proxy_cancel != NULL) { - g_object_unref(self->proxy_cancel); - self->proxy_cancel = NULL; - } - - if (error != NULL) { - g_warning("Could not grab DBus proxy for %s: %s", - "org.debian.apt", error->message); - g_error_free(error); - return; - } - - self->proxy = proxy; - // Set up the watch. - watcher_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM, - "org.debian.apt", - G_BUS_NAME_WATCHER_FLAGS_NONE, - apt_watcher_on_name_appeared, - apt_watcher_on_name_vanished, - self, - NULL); - - g_signal_connect (self->proxy, - "g-signal", - G_CALLBACK(apt_watcher_signal_cb), - self); -} - -static void -apt_watcher_on_name_appeared (GDBusConnection *connection, - const gchar *name, - const gchar *name_owner, - gpointer user_data) -{ - g_return_if_fail (APT_IS_WATCHER (user_data)); - AptWatcher* watcher = APT_WATCHER (user_data); - - g_print ("Name %s on %s is owned by %s\n", - name, - "the system bus", - name_owner); - - g_dbus_proxy_call (watcher->proxy, - "UpgradeSystem", - g_variant_new("(b)", TRUE), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, - apt_watcher_upgrade_system_cb, - user_data); -} - - -static void -apt_watcher_on_name_vanished (GDBusConnection *connection, - const gchar *name, - gpointer user_data) -{ - g_debug ("Name %s does not exist or has just vanished", - name); - g_return_if_fail (APT_IS_WATCHER (user_data)); -} - -static void -apt_watcher_upgrade_system_cb (GObject * obj, - GAsyncResult * res, - gpointer user_data) -{ - g_return_if_fail (APT_IS_WATCHER (user_data)); - AptWatcher* self = APT_WATCHER (user_data); - - GError * error = NULL; - GVariant * result; - - result = g_dbus_proxy_call_finish(self->proxy, res, &error); - - if (error != NULL) { - g_warning ("unable to complete the UpgradeSystem apt call"); - g_error_free (error); - return; - } - - gchar* transaction_id = NULL; - g_variant_get (result, "(s)", &transaction_id); - - if (transaction_id == NULL){ - g_warning ("apt_watcher_upgrade_system_cb - transaction id is null"); - return; - } - - apt_watcher_manage_transactions (self, transaction_id); - -} static void apt_watcher_show_apt_dialog (DbusmenuMenuitem * mi, @@ -260,227 +103,6 @@ apt_watcher_show_apt_dialog (DbusmenuMenuitem * mi, } } -static void -apt_watcher_transaction_state_real_update_cb (AptTransaction* trans, - gint update, - gpointer user_data) -{ - g_debug ("apt-watcher -transaction update %i", update); - g_return_if_fail (APT_IS_WATCHER (user_data)); - AptWatcher* self = APT_WATCHER (user_data); - - AptState state = (AptState)update; - if (self->current_state != RESTART_NEEDED) - { - if (state == UP_TO_DATE){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Software Up to Date")); - self->current_state = state; - } - else if (state == UPDATES_AVAILABLE){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Updates Available…")); - self->current_state = state; - } - else if (state == UPGRADE_IN_PROGRESS){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Updates Installing…")); - self->current_state = state; - } - else if (state == FINISHED){ - gboolean query_again = FALSE; - - // Only query if the previous state was an upgrade. - if (self->current_state != UPGRADE_IN_PROGRESS){ - query_again = TRUE; - } - else{ - if (self->reboot_query != 0){ - g_source_remove (self->reboot_query); - self->reboot_query = 0; - } - self->reboot_query = g_timeout_add_seconds (1, - apt_watcher_query_reboot_status, - self); - } - self->current_state = state; - - g_object_unref (G_OBJECT(self->current_transaction)); - self->current_transaction = NULL; - - // It is impossible to determine from a 'real' transaction whether - // updates are available therefore it is necessary to check again via a - // simulation whether there are updates available. - if (query_again){ - g_dbus_proxy_call (self->proxy, - "UpgradeSystem", - g_variant_new("(b)", TRUE), - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, - apt_watcher_upgrade_system_cb, - self); - } - } - } -} - - -static void -apt_watcher_transaction_state_simulation_update_cb (AptTransaction* trans, - gint update, - gpointer user_data) -{ - g_debug ("apt-watcher -transaction update %i", update); - g_return_if_fail (APT_IS_WATCHER (user_data)); - AptWatcher* self = APT_WATCHER (user_data); - - AptState state = (AptState)update; - if (self->current_state != RESTART_NEEDED) - { - if (state == UP_TO_DATE){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Software Up to Date")); - if (self->reboot_query != 0){ - g_source_remove (self->reboot_query); - self->reboot_query = 0; - } - self->reboot_query = g_timeout_add_seconds (1, - apt_watcher_query_reboot_status, - self); - } - else if (state == UPDATES_AVAILABLE){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Updates Available…")); - } - else if (state == UPGRADE_IN_PROGRESS){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Updates Installing…")); - } - self->current_state = state; - } - if (self->current_state != UPGRADE_IN_PROGRESS){ - g_object_unref (G_OBJECT(self->current_transaction)); - self->current_transaction = NULL; - } -} - -static void -apt_watcher_manage_transactions (AptWatcher* self, gchar* transaction_id) -{ - if (self->current_transaction == NULL){ - self->current_transaction = apt_transaction_new (transaction_id, SIMULATION); - g_signal_connect (G_OBJECT(self->current_transaction), - "state-update", - G_CALLBACK(apt_watcher_transaction_state_simulation_update_cb), self); - } -} - -static gboolean -apt_watcher_query_reboot_status (gpointer data) -{ - g_return_val_if_fail (APT_IS_WATCHER (data), FALSE); - AptWatcher* self = APT_WATCHER (data); - - GVariant* reboot_result = g_dbus_proxy_get_cached_property (self->proxy, - "RebootRequired"); - gboolean reboot = FALSE; - g_variant_get (reboot_result, "b", &reboot); - g_debug ("apt_watcher_query_reboot_status: reboot prop = %i", reboot); - if (reboot == FALSE){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Software Up to Date")); - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_DISPOSITION, - DBUSMENU_MENUITEM_DISPOSITION_NORMAL); - - } - else{ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Restart to Complete Updates…")); - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_DISPOSITION, - DBUSMENU_MENUITEM_DISPOSITION_ALERT); - session_dbus_restart_required (self->session_dbus_interface); - self->current_state = RESTART_NEEDED; - } - self->reboot_query = 0; - return FALSE; -} - -static void apt_watcher_signal_cb ( GDBusProxy* proxy, - gchar* sender_name, - gchar* signal_name, - GVariant* parameters, - gpointer user_data) -{ - g_return_if_fail (APT_IS_WATCHER (user_data)); - AptWatcher* self = APT_WATCHER (user_data); - - g_variant_ref_sink (parameters); - GVariant *value = g_variant_get_child_value (parameters, 0); - - if (g_strcmp0(signal_name, "ActiveTransactionsChanged") == 0){ - gchar* current = NULL; - g_debug ("ActiveTransactionsChanged"); - - g_variant_get(value, "s", ¤t); - - if (g_str_has_prefix (current, "/org/debian/apt/transaction/") == TRUE){ - g_debug ("ActiveTransactionsChanged - current is %s", current); - - // Cancel all existing operations. - if (self->reboot_query != 0){ - g_source_remove (self->reboot_query); - self->reboot_query = 0; - } - - if (self->current_transaction != NULL) - { - g_object_unref (G_OBJECT(self->current_transaction)); - self->current_transaction = NULL; - } - - self->current_transaction = apt_transaction_new (current, REAL); - g_signal_connect (G_OBJECT(self->current_transaction), - "state-update", - G_CALLBACK(apt_watcher_transaction_state_real_update_cb), self); - } - } - else if (g_strcmp0(signal_name, "PropertyChanged") == 0) - { - gchar* prop_name= NULL; - GVariant* value = NULL; - g_variant_get (parameters, "(sv)", &prop_name, &value); - g_debug ("transaction prop update - prop = %s", prop_name); - - if (g_strcmp0 (prop_name, "RebootRequired") == 0){ - gboolean reboot_required = FALSE; - g_variant_get (value, "(b)", &reboot_required); - if (reboot_required){ - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_LABEL, - _("Restart to Complete Updates…")); - dbusmenu_menuitem_property_set (self->apt_item, - DBUSMENU_MENUITEM_PROP_DISPOSITION, - DBUSMENU_MENUITEM_DISPOSITION_ALERT); - self->current_state = RESTART_NEEDED; - } - } - } - - g_variant_unref (value); - g_variant_unref (parameters); -} - AptWatcher* apt_watcher_new (SessionDbus* session_dbus, DbusmenuMenuitem* item) { diff --git a/src/apt-watcher.h b/src/apt-watcher.h index 6b7d5e1..54d26f5 100644 --- a/src/apt-watcher.h +++ b/src/apt-watcher.h @@ -28,6 +28,7 @@ with this program. If not, see . #include #include "session-dbus.h" +#include "dbus-shared-names.h" G_BEGIN_DECLS @@ -50,7 +51,6 @@ GType apt_watcher_get_type (void) G_GNUC_CONST; AptWatcher* apt_watcher_new (SessionDbus* session_dbus, DbusmenuMenuitem* apt_item); - G_END_DECLS #endif /* _APT_WATCHER_H_ */ -- cgit v1.2.3 From 9954c4eb34c9c9c66d3010d7e1dced82b0747518 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 6 Feb 2012 20:28:34 +0000 Subject: we need to talk to dbus to listen for signals from package kit, the lib doesnt wrap the signals ... --- src/apt-watcher.c | 140 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 126 insertions(+), 14 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index 07b633d..571b1c2 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -37,38 +37,121 @@ struct _AptWatcher DbusmenuMenuitem* apt_item; AptState current_state; PkClient* pkclient; + GCancellable * proxy_cancel; + GDBusProxy * proxy; }; static void apt_watcher_show_apt_dialog (DbusmenuMenuitem* mi, guint timestamp, gpointer userdata); +//static gboolean apt_watcher_start_apt_interaction (gpointer data); G_DEFINE_TYPE (AptWatcher, apt_watcher, G_TYPE_OBJECT); +static void apt_watcher_signal_cb ( GDBusProxy* proxy, + gchar* sender_name, + gchar* signal_name, + GVariant* parameters, + gpointer user_data) +{ + g_return_if_fail (APT_IS_WATCHER (user_data)); + //AptWatcher* self = APT_WATCHER (user_data); + + g_variant_ref_sink (parameters); + GVariant *value = g_variant_get_child_value (parameters, 0); + + if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ + g_debug ("UpdatesChanged signal received"); + + } + else if (g_strcmp0(signal_name, "RestartScheduled") == 0) { + g_debug ("RestartScheduled signal received"); + } + + g_variant_unref (value); + g_variant_unref (parameters); +} + static void -apt_watcher_init (AptWatcher *self) +apt_watcher_on_name_appeared (GDBusConnection *connection, + const gchar *name, + const gchar *name_owner, + gpointer user_data) { - self->current_state = UP_TO_DATE; - self->pkclient = pk_client_new (); - /*g_timeout_add_seconds (60, - apt_watcher_start_apt_interaction, - self); */ + g_return_if_fail (APT_IS_WATCHER (user_data)); + // AptWatcher* watcher = APT_WATCHER (user_data); + + g_print ("Name %s on %s is owned by %s\n", + name, + "the system bus", + name_owner); } + static void -apt_watcher_finalize (GObject *object) +apt_watcher_on_name_vanished (GDBusConnection *connection, + const gchar *name, + gpointer user_data) { - g_bus_unwatch_name (watcher_id); - //AptWatcher* self = APT_WATCHER (object); - - G_OBJECT_CLASS (apt_watcher_parent_class)->finalize (object); + g_debug ("Name %s does not exist or has just vanished", + name); + g_return_if_fail (APT_IS_WATCHER (user_data)); } static void -apt_watcher_class_init (AptWatcherClass *klass) +fetch_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) { - GObjectClass* object_class = G_OBJECT_CLASS (klass); - object_class->finalize = apt_watcher_finalize; + GError * error = NULL; + + AptWatcher* self = APT_WATCHER(user_data); + g_return_if_fail(self != NULL); + + GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); + + if (self->proxy_cancel != NULL) { + g_object_unref(self->proxy_cancel); + self->proxy_cancel = NULL; + } + + if (error != NULL) { + g_warning("Could not grab DBus proxy for %s: %s", + "org.debian.apt", error->message); + g_error_free(error); + return; + } + + self->proxy = proxy; + // Set up the watch. + watcher_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM, + "org.freedesktop.PackageKit", + G_BUS_NAME_WATCHER_FLAGS_NONE, + apt_watcher_on_name_appeared, + apt_watcher_on_name_vanished, + self, + NULL); + + g_signal_connect (self->proxy, + "g-signal", + G_CALLBACK(apt_watcher_signal_cb), + self); +} + + +static gboolean +apt_watcher_start_apt_interaction (gpointer data) +{ + g_return_val_if_fail (APT_IS_WATCHER (data), FALSE); + AptWatcher* self = APT_WATCHER (data); + g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "org.freedesktop.PackageKit", + "/org/freedesktop/PackageKit", + "org.freedesktop.PackageKit", + self->proxy_cancel, + fetch_proxy_cb, + self); + return FALSE; } @@ -103,6 +186,35 @@ apt_watcher_show_apt_dialog (DbusmenuMenuitem * mi, } } +static void +apt_watcher_init (AptWatcher *self) +{ + self->current_state = UP_TO_DATE; + self->pkclient = pk_client_new (); + g_timeout_add_seconds (60, + apt_watcher_start_apt_interaction, + self); +} + +static void +apt_watcher_finalize (GObject *object) +{ + g_bus_unwatch_name (watcher_id); + AptWatcher* self = APT_WATCHER (object); + + if (self->proxy != NULL) + g_object_unref (self->proxy); + + G_OBJECT_CLASS (apt_watcher_parent_class)->finalize (object); +} + +static void +apt_watcher_class_init (AptWatcherClass *klass) +{ + GObjectClass* object_class = G_OBJECT_CLASS (klass); + object_class->finalize = apt_watcher_finalize; +} + AptWatcher* apt_watcher_new (SessionDbus* session_dbus, DbusmenuMenuitem* item) { -- cgit v1.2.3 From e0c43e050f0ec37d22111cc90b7fa1dc7f5c0da8 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 6 Feb 2012 21:07:57 +0000 Subject: query for updates half complete --- src/apt-watcher.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index 571b1c2..0165bf0 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -41,13 +41,16 @@ struct _AptWatcher GDBusProxy * proxy; }; -static void apt_watcher_show_apt_dialog (DbusmenuMenuitem* mi, - guint timestamp, - gpointer userdata); -//static gboolean apt_watcher_start_apt_interaction (gpointer data); - G_DEFINE_TYPE (AptWatcher, apt_watcher, G_TYPE_OBJECT); +static void +get_updates_complete (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + +} + static void apt_watcher_signal_cb ( GDBusProxy* proxy, gchar* sender_name, gchar* signal_name, @@ -55,14 +58,19 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, gpointer user_data) { g_return_if_fail (APT_IS_WATCHER (user_data)); - //AptWatcher* self = APT_WATCHER (user_data); + AptWatcher* self = APT_WATCHER (user_data); g_variant_ref_sink (parameters); GVariant *value = g_variant_get_child_value (parameters, 0); if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ g_debug ("UpdatesChanged signal received"); - + self->pkclient = pk_client_new (); + pk_client_get_updates_async (self->pkclient, + PK_FILTER_ENUM_NONE, + NULL, NULL, NULL, + get_updates_complete, + self); } else if (g_strcmp0(signal_name, "RestartScheduled") == 0) { g_debug ("RestartScheduled signal received"); @@ -190,7 +198,6 @@ static void apt_watcher_init (AptWatcher *self) { self->current_state = UP_TO_DATE; - self->pkclient = pk_client_new (); g_timeout_add_seconds (60, apt_watcher_start_apt_interaction, self); -- cgit v1.2.3 From bf53f6ba5ca03a9cf6617eb09046ad5cc2e564ad Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 7 Feb 2012 11:37:06 +0000 Subject: fetching available packages --- src/apt-watcher.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index 0165bf0..41ed8fc 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -30,6 +30,10 @@ with this program. If not, see . static guint watcher_id; +// TODO +// Get it working and then remove the pkclient pointer in the priv +// it's not needed. + struct _AptWatcher { GObject parent_instance; @@ -38,7 +42,7 @@ struct _AptWatcher AptState current_state; PkClient* pkclient; GCancellable * proxy_cancel; - GDBusProxy * proxy; + GDBusProxy * proxy; }; G_DEFINE_TYPE (AptWatcher, apt_watcher, G_TYPE_OBJECT); @@ -48,7 +52,23 @@ get_updates_complete (GObject *source_object, GAsyncResult *res, gpointer user_data) { + g_return_if_fail (APT_IS_WATCHER (user_data)); + //AptWatcher* self = APT_WATCHER (user_data); + + g_print ("Get updates complete"); + PkResults * results; + + results = pk_client_generic_finish (PK_CLIENT(source_object), res, NULL); + if (results == NULL){ + g_warning ("Unable to query for updates - results were NULL ?"); + return; + } + + GPtrArray *packages; + packages = pk_results_get_package_array (results); + g_ptr_array_unref (packages); + g_object_unref (results); } static void apt_watcher_signal_cb ( GDBusProxy* proxy, @@ -65,11 +85,12 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ g_debug ("UpdatesChanged signal received"); - self->pkclient = pk_client_new (); + if (self->pkclient == NULL) + self->pkclient = pk_client_new (); pk_client_get_updates_async (self->pkclient, PK_FILTER_ENUM_NONE, NULL, NULL, NULL, - get_updates_complete, + (GAsyncReadyCallback)get_updates_complete, self); } else if (g_strcmp0(signal_name, "RestartScheduled") == 0) { @@ -198,7 +219,7 @@ static void apt_watcher_init (AptWatcher *self) { self->current_state = UP_TO_DATE; - g_timeout_add_seconds (60, + g_timeout_add_seconds (1, apt_watcher_start_apt_interaction, self); } @@ -211,6 +232,8 @@ apt_watcher_finalize (GObject *object) if (self->proxy != NULL) g_object_unref (self->proxy); + if (self->pkclient != NULL) + g_object_unref (self->pkclient); G_OBJECT_CLASS (apt_watcher_parent_class)->finalize (object); } -- cgit v1.2.3 From 6e585e5487560785caaaf129a1084fd94313ce11 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 7 Feb 2012 14:35:29 +0000 Subject: apt watcher updates --- src/apt-watcher.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index 41ed8fc..eed0080 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -67,6 +67,11 @@ get_updates_complete (GObject *source_object, GPtrArray *packages; packages = pk_results_get_package_array (results); + g_print ("Packages count = %i", + packages->len); + if (packages->len > 0){ + + } g_ptr_array_unref (packages); g_object_unref (results); } @@ -135,10 +140,10 @@ fetch_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) AptWatcher* self = APT_WATCHER(user_data); g_return_if_fail(self != NULL); - GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); + GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish (res, &error); if (self->proxy_cancel != NULL) { - g_object_unref(self->proxy_cancel); + g_object_unref (self->proxy_cancel); self->proxy_cancel = NULL; } @@ -165,7 +170,6 @@ fetch_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) self); } - static gboolean apt_watcher_start_apt_interaction (gpointer data) { -- cgit v1.2.3 From e856eb999de074536d8bdf634f519f3947daf7c3 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 7 Feb 2012 15:49:20 +0000 Subject: no need to hold on to a reference to a pkclient instance --- src/apt-watcher.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index eed0080..bcf6c97 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -40,13 +40,13 @@ struct _AptWatcher SessionDbus* session_dbus_interface; DbusmenuMenuitem* apt_item; AptState current_state; - PkClient* pkclient; GCancellable * proxy_cancel; GDBusProxy * proxy; }; G_DEFINE_TYPE (AptWatcher, apt_watcher, G_TYPE_OBJECT); + static void get_updates_complete (GObject *source_object, GAsyncResult *res, @@ -56,7 +56,7 @@ get_updates_complete (GObject *source_object, //AptWatcher* self = APT_WATCHER (user_data); g_print ("Get updates complete"); - PkResults * results; + PkResults *results; results = pk_client_generic_finish (PK_CLIENT(source_object), res, NULL); @@ -70,10 +70,25 @@ get_updates_complete (GObject *source_object, g_print ("Packages count = %i", packages->len); if (packages->len > 0){ - + g_print ("Apparently we have updates available"); } g_ptr_array_unref (packages); g_object_unref (results); + g_object_unref (source_object); +} + +static void +apt_watcher_check_for_updates (AptWatcher* self) +{ + g_debug ("UpdatesChanged signal received"); + PkClient* client; + client = pk_client_new (); + + pk_client_get_updates_async (client, + PK_FILTER_ENUM_NONE, + NULL, NULL, NULL, + (GAsyncReadyCallback)get_updates_complete, + self); } static void apt_watcher_signal_cb ( GDBusProxy* proxy, @@ -89,14 +104,8 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, GVariant *value = g_variant_get_child_value (parameters, 0); if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ - g_debug ("UpdatesChanged signal received"); - if (self->pkclient == NULL) - self->pkclient = pk_client_new (); - pk_client_get_updates_async (self->pkclient, - PK_FILTER_ENUM_NONE, - NULL, NULL, NULL, - (GAsyncReadyCallback)get_updates_complete, - self); + g_print ("updates changed signal received"); + apt_watcher_check_for_updates (self); } else if (g_strcmp0(signal_name, "RestartScheduled") == 0) { g_debug ("RestartScheduled signal received"); @@ -162,8 +171,7 @@ fetch_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) apt_watcher_on_name_appeared, apt_watcher_on_name_vanished, self, - NULL); - + NULL); g_signal_connect (self->proxy, "g-signal", G_CALLBACK(apt_watcher_signal_cb), @@ -184,6 +192,7 @@ apt_watcher_start_apt_interaction (gpointer data) self->proxy_cancel, fetch_proxy_cb, self); + apt_watcher_check_for_updates (self); return FALSE; } @@ -236,8 +245,6 @@ apt_watcher_finalize (GObject *object) if (self->proxy != NULL) g_object_unref (self->proxy); - if (self->pkclient != NULL) - g_object_unref (self->pkclient); G_OBJECT_CLASS (apt_watcher_parent_class)->finalize (object); } -- cgit v1.2.3 From 3c560ddcaeb71953c7dfecf2acfa11aa77b0e3d9 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 8 Feb 2012 12:29:49 +0000 Subject: pk kit compat layer seems to be sane --- src/apt-watcher.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index bcf6c97..cdb3ce9 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -33,7 +33,6 @@ static guint watcher_id; // TODO // Get it working and then remove the pkclient pointer in the priv // it's not needed. - struct _AptWatcher { GObject parent_instance; @@ -53,9 +52,8 @@ get_updates_complete (GObject *source_object, gpointer user_data) { g_return_if_fail (APT_IS_WATCHER (user_data)); - //AptWatcher* self = APT_WATCHER (user_data); + AptWatcher* self = APT_WATCHER (user_data); - g_print ("Get updates complete"); PkResults *results; results = pk_client_generic_finish (PK_CLIENT(source_object), res, NULL); @@ -67,10 +65,26 @@ get_updates_complete (GObject *source_object, GPtrArray *packages; packages = pk_results_get_package_array (results); - g_print ("Packages count = %i", - packages->len); + + const gchar* disposition; + disposition = dbusmenu_menuitem_property_get (self->apt_item, + DBUSMENU_MENUITEM_PROP_DISPOSITION); + gboolean do_update; + do_update = g_strcmp0 (disposition, DBUSMENU_MENUITEM_DISPOSITION_ALERT) != 0; + if (packages->len > 0){ - g_print ("Apparently we have updates available"); + g_print ("Apparently we have updates available - change dbmitem %i", do_update); + if (do_update) + dbusmenu_menuitem_property_set (self->apt_item, + DBUSMENU_MENUITEM_PROP_LABEL, + _("Updates Available…")); + } + else{ + g_print ("No updates available - change dbmitem - %i", do_update); + if (do_update) + dbusmenu_menuitem_property_set (self->apt_item, + DBUSMENU_MENUITEM_PROP_LABEL, + _("Software Up to Date")); } g_ptr_array_unref (packages); g_object_unref (results); @@ -80,7 +94,6 @@ get_updates_complete (GObject *source_object, static void apt_watcher_check_for_updates (AptWatcher* self) { - g_debug ("UpdatesChanged signal received"); PkClient* client; client = pk_client_new (); @@ -102,13 +115,19 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, g_variant_ref_sink (parameters); GVariant *value = g_variant_get_child_value (parameters, 0); - + g_debug ("apt-watcher-signal cb signal name - %s", signal_name); if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ - g_print ("updates changed signal received"); + g_debug ("updates changed signal received"); apt_watcher_check_for_updates (self); } else if (g_strcmp0(signal_name, "RestartScheduled") == 0) { g_debug ("RestartScheduled signal received"); + dbusmenu_menuitem_property_set (self->apt_item, + DBUSMENU_MENUITEM_PROP_LABEL, + _("Restart to Complete Updates…")); + dbusmenu_menuitem_property_set (self->apt_item, + DBUSMENU_MENUITEM_PROP_DISPOSITION, + DBUSMENU_MENUITEM_DISPOSITION_ALERT); } g_variant_unref (value); -- cgit v1.2.3 From d4162d24e4bdee56df9bf6815207cf0ecf15fed3 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 8 Feb 2012 16:37:31 +0000 Subject: get rid of the transaction as we don't need to worry about updates installing state --- src/Makefile.am | 4 +- src/apt-transaction.c | 263 -------------------------------------------------- src/apt-transaction.h | 49 ---------- src/apt-watcher.c | 9 +- 4 files changed, 5 insertions(+), 320 deletions(-) delete mode 100644 src/apt-transaction.c delete mode 100644 src/apt-transaction.h diff --git a/src/Makefile.am b/src/Makefile.am index afee66c..67a1cb6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -114,9 +114,7 @@ indicator_session_service_SOURCES = \ if BUILD_APT indicator_session_service_SOURCES += \ apt-watcher.h \ - apt-watcher.c \ - apt-transaction.h \ - apt-transaction.c + apt-watcher.c endif indicator_session_service_CFLAGS = \ diff --git a/src/apt-transaction.c b/src/apt-transaction.c deleted file mode 100644 index 2b3f5a4..0000000 --- a/src/apt-transaction.c +++ /dev/null @@ -1,263 +0,0 @@ -/* -Copyright 2011 Canonical Ltd. - -Authors: - Conor Curran - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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 . -*/ - -#include - -#include "apt-transaction.h" -#include "dbus-shared-names.h" - -static void apt_transaction_investigate (AptTransaction* self); -static void apt_transaction_simulate_transaction_cb (GObject * obj, - GAsyncResult * res, - gpointer user_data); -static void apt_transaction_receive_signal (GDBusProxy * proxy, - gchar * sender_name, - gchar * signal_name, - GVariant * parameters, - gpointer user_data); -static void apt_transaction_finish_proxy_setup (GObject *source_object, - GAsyncResult *res, - gpointer user_data); - -struct _AptTransaction -{ - GObject parent_instance; - GDBusProxy * proxy; - GCancellable * proxy_cancel; - gchar* id; - TransactionType type; -}; - -enum { - UPDATE, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0 }; - -G_DEFINE_TYPE (AptTransaction, apt_transaction, G_TYPE_OBJECT); - -static void -apt_transaction_init (AptTransaction *self) -{ - self->proxy = NULL; - self->id = NULL; - self->proxy_cancel = g_cancellable_new(); -} - -static void -apt_transaction_finalize (GObject *object) -{ - AptTransaction* self = APT_TRANSACTION(object); - g_signal_handlers_disconnect_by_func (G_OBJECT (self->proxy), - G_CALLBACK (apt_transaction_receive_signal), - self); - if (self->proxy != NULL){ - g_object_unref (self->proxy); - self->proxy = NULL; - } - g_free (self->id); - G_OBJECT_CLASS (apt_transaction_parent_class)->finalize (object); -} - -static void -apt_transaction_class_init (AptTransactionClass *klass) -{ - GObjectClass* object_class = G_OBJECT_CLASS (klass); - object_class->finalize = apt_transaction_finalize; - - signals[UPDATE] = g_signal_new("state-update", - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__INT, - G_TYPE_NONE, 1, G_TYPE_INT); -} - -// TODO: you don't need this additional helper -// Just GObject properties properly -static void -apt_transaction_investigate (AptTransaction* self) -{ - g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - "org.debian.apt", - self->id, - "org.debian.apt.transaction", - self->proxy_cancel, - apt_transaction_finish_proxy_setup, - self); -} - -static void -apt_transaction_finish_proxy_setup (GObject *source_object, - GAsyncResult *res, - gpointer user_data) -{ - g_return_if_fail (APT_IS_TRANSACTION (user_data)); - AptTransaction* self = APT_TRANSACTION(user_data); - GError * error = NULL; - - GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); - - if (self->proxy_cancel != NULL) { - g_object_unref(self->proxy_cancel); - self->proxy_cancel = NULL; - } - - if (error != NULL) { - g_warning("Could not grab DBus proxy for %s: %s", - "org.debian.apt", error->message); - g_error_free(error); - return; - } - - self->proxy = proxy; - - g_signal_connect (G_OBJECT(self->proxy), - "g-signal", - G_CALLBACK (apt_transaction_receive_signal), - self); - - if (self->type == SIMULATION){ - g_dbus_proxy_call (self->proxy, - "Simulate", - NULL, - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, - apt_transaction_simulate_transaction_cb, - self); - } -} - -static void -apt_transaction_receive_signal (GDBusProxy * proxy, - gchar * sender_name, - gchar * signal_name, - GVariant * parameters, - gpointer user_data) -{ - g_return_if_fail (APT_IS_TRANSACTION (user_data)); - AptTransaction* self = APT_TRANSACTION(user_data); - AptState current_state = DONT_KNOW; - - if (g_strcmp0(signal_name, "PropertyChanged") == 0) - { - gchar* prop_name= NULL; - GVariant* value = NULL; - g_variant_get (parameters, "(sv)", &prop_name, &value); - g_debug ("transaction prop update - prop = %s", prop_name); - - if (g_variant_is_of_type (value, G_VARIANT_TYPE_STRING) == TRUE){ - gchar* key = NULL; - g_variant_get (value, "s", &key); - g_debug ("transaction prop update - value = %s", key); - } - - if (g_strcmp0 (prop_name, "Dependencies") == 0){ - - gchar** install = NULL; - gchar** reinstall = NULL; - gchar** remove = NULL; - gchar** purge = NULL; - gchar** upgrade = NULL; - gchar** downgrade = NULL; - gchar** keep = NULL; - g_variant_get (value, "(asasasasasasas)", &install, - &reinstall, &remove, &purge, &upgrade, &downgrade, - &keep); - /* - g_debug ("upgrade package length %i", g_strv_length(upgrade)); - g_debug ("install package length %i", g_strv_length(install)); - g_debug ("reinstall package length %i", g_strv_length(reinstall)); - g_debug ("remove package length %i", g_strv_length(remove)); - g_debug ("purge package length %i", g_strv_length(purge)); - */ - gboolean upgrade_needed = (g_strv_length(upgrade) > 1) || - (g_strv_length(install) > 1) || - (g_strv_length(reinstall) > 1) || - (g_strv_length(remove) > 1) || - (g_strv_length(purge) > 1); - if (upgrade_needed == TRUE){ - current_state = UPDATES_AVAILABLE; - } - else{ - current_state = UP_TO_DATE; - } - } - if (self->type == REAL) - { - GVariant* role = g_dbus_proxy_get_cached_property (self->proxy, - "Role"); - if (g_variant_is_of_type (role, G_VARIANT_TYPE_STRING) == TRUE){ - gchar* current_role = NULL; - g_variant_get (role, "s", ¤t_role); - //g_debug ("Current transaction role = %s", current_role); - if (g_strcmp0 (current_role, "role-commit-packages") == 0 || - g_strcmp0 (current_role, "role-upgrade-system") == 0){ - g_debug ("UPGRADE IN PROGRESS"); - current_state = UPGRADE_IN_PROGRESS; - } - } - } - } - else if (g_strcmp0(signal_name, "Finished") == 0) - { - g_debug ("TRANSACTION Finished"); - current_state = FINISHED; - } - // Finally send out the state update - if (current_state != DONT_KNOW){ - g_signal_emit (self, - signals[UPDATE], - 0, - current_state); - } -} - -static void -apt_transaction_simulate_transaction_cb (GObject * obj, - GAsyncResult * res, - gpointer user_data) -{ - GError * error = NULL; - if (error != NULL) { - g_warning ("unable to complete the simulate call"); - g_error_free (error); - return; - } -} -TransactionType -apt_transaction_get_transaction_type (AptTransaction* self) -{ - return self->type; -} - -AptTransaction* apt_transaction_new (gchar* transaction_id, TransactionType t) -{ - AptTransaction* tr = g_object_new (APT_TYPE_TRANSACTION, NULL); - tr->id = transaction_id; - tr->type = t; - g_debug ("Apt transaction new id = %s", tr->id); - apt_transaction_investigate (tr); - return tr; -} diff --git a/src/apt-transaction.h b/src/apt-transaction.h deleted file mode 100644 index 9e4370d..0000000 --- a/src/apt-transaction.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2011 Canonical Ltd. - -Authors: - Conor Curran - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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 . -*/ - -#ifndef _APT_TRANSACTION_H_ -#define _APT_TRANSACTION_H_ - -#include -#include "dbus-shared-names.h" - -G_BEGIN_DECLS - -#define APT_TYPE_TRANSACTION (apt_transaction_get_type ()) -#define APT_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APT_TYPE_TRANSACTION, AptTransaction)) -#define APT_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APT_TYPE_TRANSACTION, AptTransactionClass)) -#define APT_IS_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APT_TYPE_TRANSACTION)) -#define APT_IS_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APT_TYPE_TRANSACTION)) -#define APT_TRANSACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APT_TYPE_TRANSACTION, AptTransactionClass)) - -typedef struct _AptTransactionClass AptTransactionClass; -typedef struct _AptTransaction AptTransaction; - -struct _AptTransactionClass -{ - GObjectClass parent_class; -}; - -AptTransaction* apt_transaction_new (gchar* transaction_id, TransactionType t); -TransactionType apt_transaction_get_transaction_type (AptTransaction* self); -GType apt_transaction_get_type (void) G_GNUC_CONST; - -G_END_DECLS - -#endif /* _APT_TRANSACTION_H_ */ diff --git a/src/apt-watcher.c b/src/apt-watcher.c index cdb3ce9..cab2d8b 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -30,9 +30,6 @@ with this program. If not, see . static guint watcher_id; -// TODO -// Get it working and then remove the pkclient pointer in the priv -// it's not needed. struct _AptWatcher { GObject parent_instance; @@ -114,7 +111,6 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, AptWatcher* self = APT_WATCHER (user_data); g_variant_ref_sink (parameters); - GVariant *value = g_variant_get_child_value (parameters, 0); g_debug ("apt-watcher-signal cb signal name - %s", signal_name); if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ g_debug ("updates changed signal received"); @@ -129,8 +125,11 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, DBUSMENU_MENUITEM_PROP_DISPOSITION, DBUSMENU_MENUITEM_DISPOSITION_ALERT); } + else if (g_strcmp0(signal_name, "TransactionListChanged") == 0) { + GVariant *value = g_variant_get_child_value (parameters, 0); + g_variant_unref (value); - g_variant_unref (value); + } g_variant_unref (parameters); } -- cgit v1.2.3 From 4145c29279197d5985d348fbe2ef219a4c015a11 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 8 Feb 2012 17:23:19 +0000 Subject: correct conflict --- src/user-widget.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/user-widget.c b/src/user-widget.c index 8388ec5..33b9e40 100644 --- a/src/user-widget.c +++ b/src/user-widget.c @@ -136,7 +136,13 @@ user_widget_init (UserWidget *self) gtk_misc_set_padding (GTK_MISC(priv->user_image),0, 4.0); priv->user_name = gtk_label_new (""); + +#if HAVE_GTK3 priv->container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); +#else + priv->container = gtk_hbox_new (FALSE, 0); +#endif + priv->tick_icon = gtk_image_new_from_icon_name ("account-logged-in", GTK_ICON_SIZE_MENU); gtk_misc_set_alignment(GTK_MISC(priv->tick_icon), 1.0, 0.5); -- cgit v1.2.3 From 2890929b32c38c8c99ce381dd20b4df30d24f2ad Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 8 Feb 2012 18:25:18 +0000 Subject: merge request comments acted upon --- src/apt-watcher.c | 15 ++++----------- src/apt-watcher.h | 1 - 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/apt-watcher.c b/src/apt-watcher.c index 4e69ee6..6e8a5c9 100644 --- a/src/apt-watcher.c +++ b/src/apt-watcher.c @@ -52,11 +52,11 @@ get_updates_complete (GObject *source_object, AptWatcher* self = APT_WATCHER (user_data); PkResults *results; + GError *error = NULL; + results = pk_client_generic_finish (PK_CLIENT(source_object), res, &error); - results = pk_client_generic_finish (PK_CLIENT(source_object), res, NULL); - - if (results == NULL){ - g_warning ("Unable to query for updates - results were NULL ?"); + if (error != NULL){ + g_warning ("Unable to query for updates - error - %s", error->message); return; } @@ -110,7 +110,6 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, g_return_if_fail (APT_IS_WATCHER (user_data)); AptWatcher* self = APT_WATCHER (user_data); - g_variant_ref_sink (parameters); g_debug ("apt-watcher-signal cb signal name - %s", signal_name); if (g_strcmp0(signal_name, "UpdatesChanged") == 0){ g_debug ("updates changed signal received"); @@ -125,12 +124,6 @@ static void apt_watcher_signal_cb ( GDBusProxy* proxy, DBUSMENU_MENUITEM_PROP_DISPOSITION, DBUSMENU_MENUITEM_DISPOSITION_ALERT); } - else if (g_strcmp0(signal_name, "TransactionListChanged") == 0) { - GVariant *value = g_variant_get_child_value (parameters, 0); - g_variant_unref (value); - - } - g_variant_unref (parameters); } static void diff --git a/src/apt-watcher.h b/src/apt-watcher.h index 54d26f5..c571502 100644 --- a/src/apt-watcher.h +++ b/src/apt-watcher.h @@ -28,7 +28,6 @@ with this program. If not, see . #include #include "session-dbus.h" -#include "dbus-shared-names.h" G_BEGIN_DECLS -- cgit v1.2.3