From 716e613e96ba579d5cf7454320317386b9117d24 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 16:53:23 -0600 Subject: Add the title to the structure for the application indicator --- src/application-service-appstore.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index edc517f..d2758a1 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -50,6 +50,7 @@ static void props_cb (GObject * object, GAsyncResult * res, gpointer user_data); #define NOTIFICATION_ITEM_PROP_MENU "Menu" #define NOTIFICATION_ITEM_PROP_LABEL "XAyatanaLabel" #define NOTIFICATION_ITEM_PROP_LABEL_GUIDE "XAyatanaLabelGuide" +#define NOTIFICATION_ITEM_PROP_TITLE "Title" #define NOTIFICATION_ITEM_PROP_ORDERING_INDEX "XAyatanaOrderingIndex" #define NOTIFICATION_ITEM_SIG_NEW_ICON "NewIcon" @@ -108,6 +109,7 @@ struct _Application { gchar * icon_theme_path; gchar * label; gchar * guide; + gchar * title; gboolean currently_free; guint ordering_index; GList * approver_cancels; @@ -440,7 +442,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res, * status = NULL, * icon_name = NULL, * aicon_name = NULL, * icon_desc = NULL, * aicon_desc = NULL, * icon_theme_path = NULL, * index = NULL, * label = NULL, - * guide = NULL; + * guide = NULL, * title = NULL; GVariant * properties = g_dbus_proxy_call_finish(G_DBUS_PROXY(source_object), res, &error); @@ -494,6 +496,8 @@ got_all_properties (GObject * source_object, GAsyncResult * res, label = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_LABEL_GUIDE) == 0) { guide = g_variant_ref(value); + } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_TITLE) == 0) { + title = g_variant_ref(value); } /* else ignore */ } g_variant_iter_free (iter); @@ -581,6 +585,13 @@ got_all_properties (GObject * source_object, GAsyncResult * res, app->guide = g_strdup(""); } + g_free(app->title); + if (title != NULL) { + app->title = g_variant_dup_string(title, NULL); + } else { + app->title = g_strdup(""); + } + g_list_foreach(priv->approvers, check_with_old_approver, app); apply_status(app); @@ -603,6 +614,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res, if (index) g_variant_unref (index); if (label) g_variant_unref (label); if (guide) g_variant_unref (guide); + if (title) g_variant_unref (title); return; } @@ -784,6 +796,9 @@ application_free (Application * app) if (app->guide != NULL) { g_free(app->guide); } + if (app->title != NULL) { + g_free(app->title); + } if (app->approver_cancels != NULL) { g_list_foreach(app->approver_cancels, (GFunc)g_cancellable_cancel, NULL); g_list_foreach(app->approver_cancels, (GFunc)g_object_unref, NULL); @@ -1039,6 +1054,7 @@ application_service_appstore_application_add (ApplicationServiceAppstore * appst app->icon_theme_path = NULL; app->label = NULL; app->guide = NULL; + app->title = NULL; app->currently_free = FALSE; app->ordering_index = 0; app->approver_cancels = NULL; -- cgit v1.2.3 From c91e6fcb209ec0121a6f9d3ded750d0588ca03a2 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 16:57:21 -0600 Subject: Handling the 'NewTitle' signal coming from the application indicator --- src/application-service-appstore.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index d2758a1..e60450c 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -58,6 +58,7 @@ static void props_cb (GObject * object, GAsyncResult * res, gpointer user_data); #define NOTIFICATION_ITEM_SIG_NEW_STATUS "NewStatus" #define NOTIFICATION_ITEM_SIG_NEW_LABEL "XAyatanaNewLabel" #define NOTIFICATION_ITEM_SIG_NEW_ICON_THEME_PATH "NewIconThemePath" +#define NOTIFICATION_ITEM_SIG_NEW_TITLE "NewTitle" #define OVERRIDE_GROUP_NAME "Ordering Index Overrides" #define OVERRIDE_FILE_NAME "ordering-override.keyfile" @@ -1214,6 +1215,10 @@ app_receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name /* aicon name isn't provided by signal, so look it up */ get_all_properties(app); } + else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_TITLE) == 0) { + /* title name isn't provided by signal, so look it up */ + get_all_properties(app); + } else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_STATUS) == 0) { const gchar * status; g_variant_get(parameters, "(&s)", &status); -- cgit v1.2.3 From c1f07f77dcf0dabf24a5e540112b8e47c0aad75e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 17:03:12 -0600 Subject: If we have a mega-change of things, let's signal a title change --- src/application-service-appstore.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index e60450c..07783ad 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -939,6 +939,9 @@ apply_status (Application * app) g_variant_new ("(iss)", position, app->label != NULL ? app->label : "", app->guide != NULL ? app->guide : "")); + emit_signal (appstore, "ApplicationTitleChanged", + g_variant_new ("(is)", position, + app->title != NULL ? app->title : "")); } } -- cgit v1.2.3 From 2a7a9f3e01227c83df481a63f288b620213fd883 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 17:04:01 -0600 Subject: Changing the service description to match --- src/application-service.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/application-service.xml b/src/application-service.xml index 434cfd8..2588d8e 100644 --- a/src/application-service.xml +++ b/src/application-service.xml @@ -69,5 +69,9 @@ with this program. If not, see . + + + + -- cgit v1.2.3 From 1b2a4572a83b8e876bc7612e4dc7c913a82f1bd3 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 20:18:58 -0600 Subject: Adding to more strings to the standard structure, ID and title --- src/application-service.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/application-service.xml b/src/application-service.xml index 2588d8e..72dbf21 100644 --- a/src/application-service.xml +++ b/src/application-service.xml @@ -26,7 +26,7 @@ with this program. If not, see . - + @@ -51,6 +51,8 @@ with this program. If not, see . + + -- cgit v1.2.3 From 3ceb0322953f0ddfb7fe69ae703ac5c775a7fe00 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 20:34:52 -0600 Subject: Adding in service versions to detect the dbus API change --- src/application-service.c | 2 +- src/dbus-shared.h | 1 + src/indicator-application.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/application-service.c b/src/application-service.c index 68ac264..bc1787f 100644 --- a/src/application-service.c +++ b/src/application-service.c @@ -55,7 +55,7 @@ main (int argc, char ** argv) g_type_init(); /* Bring us up as a basic indicator service */ - service = indicator_service_new(INDICATOR_APPLICATION_DBUS_ADDR); + service = indicator_service_new_version(INDICATOR_APPLICATION_DBUS_ADDR, INDICATOR_APPLICATION_SERVICE_VERSION); g_signal_connect(G_OBJECT(service), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, G_CALLBACK(service_disconnected), NULL); /* Building our app store */ diff --git a/src/dbus-shared.h b/src/dbus-shared.h index 6144b9b..ce27bd9 100644 --- a/src/dbus-shared.h +++ b/src/dbus-shared.h @@ -23,6 +23,7 @@ with this program. If not, see . #define INDICATOR_APPLICATION_DBUS_ADDR "com.canonical.indicator.application" #define INDICATOR_APPLICATION_DBUS_OBJ "/com/canonical/indicator/application/service" #define INDICATOR_APPLICATION_DBUS_IFACE "com.canonical.indicator.application.service" +#define INDICATOR_APPLICATION_SERVICE_VERSION 2 #define NOTIFICATION_WATCHER_DBUS_ADDR "org.kde.StatusNotifierWatcher" #define NOTIFICATION_WATCHER_DBUS_OBJ "/StatusNotifierWatcher" diff --git a/src/indicator-application.c b/src/indicator-application.c index 173124c..d515e34 100644 --- a/src/indicator-application.c +++ b/src/indicator-application.c @@ -158,7 +158,7 @@ indicator_application_init (IndicatorApplication *self) priv->theme_dirs = NULL; priv->disconnect_kill = 0; - priv->sm = indicator_service_manager_new(INDICATOR_APPLICATION_DBUS_ADDR); + priv->sm = indicator_service_manager_new_version(INDICATOR_APPLICATION_DBUS_ADDR, INDICATOR_APPLICATION_SERVICE_VERSION); g_signal_connect(G_OBJECT(priv->sm), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_changed), self); priv->applications = NULL; -- cgit v1.2.3 From cef6f0fc81bb99aac7cc9d78529b12c05c2a5fc1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 20:36:54 -0600 Subject: Changing the output signatures --- src/application-service-appstore.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index 07783ad..0548ced 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -922,12 +922,12 @@ apply_status (Application * app) if (app->visible_state == VISIBLE_STATE_HIDDEN) { /* Put on panel */ emit_signal (appstore, "ApplicationAdded", - g_variant_new ("(sisosssss)", newicon, + g_variant_new ("(sisossssss)", newicon, get_position(app), app->dbus_name, app->menu, app->icon_theme_path, app->label, app->guide, - newdesc, app->id)); + newdesc, app->id, app->title)); } else { /* Icon update */ gint position = get_position(app); @@ -1347,20 +1347,20 @@ get_applications (ApplicationServiceAppstore * appstore) continue; } - g_variant_builder_add (&builder, "(sisosssss)", app->icon, + g_variant_builder_add (&builder, "(sisossssss)", app->icon, position++, app->dbus_name, app->menu, app->icon_theme_path, app->label, app->guide, (app->icon_desc != NULL) ? app->icon_desc : "", - app->id); + app->id, app->title); } out = g_variant_builder_end(&builder); } else { GError * error = NULL; - out = g_variant_parse(g_variant_type_new("a(sisosssss)"), "[]", NULL, NULL, &error); + out = g_variant_parse(g_variant_type_new("a(sisossssss)"), "[]", NULL, NULL, &error); if (error != NULL) { - g_warning("Unable to parse '[]' as a 'a(sisosssss)': %s", error->message); + g_warning("Unable to parse '[]' as a 'a(sisossssss)': %s", error->message); out = NULL; g_error_free(error); } -- cgit v1.2.3 From bc7f44a24e624911fd5b343431f5a8a4b110f653 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 20:37:21 -0600 Subject: Don't need the ID as that's already the hint --- src/application-service.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/application-service.xml b/src/application-service.xml index 72dbf21..9428ebb 100644 --- a/src/application-service.xml +++ b/src/application-service.xml @@ -26,7 +26,7 @@ with this program. If not, see . - + @@ -51,7 +51,6 @@ with this program. If not, see . - -- cgit v1.2.3 From 432817d5e245989beb6438c352c61114742c394f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 3 Feb 2012 20:41:29 -0600 Subject: Changing the signatures on the indicator side, we don't care much about title though. --- src/indicator-application.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/indicator-application.c b/src/indicator-application.c index d515e34..8b28ebc 100644 --- a/src/indicator-application.c +++ b/src/indicator-application.c @@ -811,10 +811,11 @@ receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, const gchar * guide; const gchar * accessible_desc; const gchar * hint; - g_variant_get (parameters, "(&si&s&o&s&s&s&s&s)", &iconname, + const gchar * title; + g_variant_get (parameters, "(&si&s&o&s&s&s&s&s&s)", &iconname, &position, &dbusaddress, &dbusobject, &icon_theme_path, &label, &guide, - &accessible_desc, &hint); + &accessible_desc, &hint, &title); application_added(self, iconname, position, dbusaddress, dbusobject, icon_theme_path, label, guide, accessible_desc, hint); @@ -884,7 +885,7 @@ get_applications (GObject * obj, GAsyncResult * res, gpointer user_data) } /* Get our new applications that we got in the request */ - g_variant_get(result, "(a(sisosssss))", &iter); + g_variant_get(result, "(a(sisossssss))", &iter); while ((child = g_variant_iter_next_value (iter))) { get_applications_helper(self, child); g_variant_unref(child); @@ -909,9 +910,10 @@ get_applications_helper (IndicatorApplication * self, GVariant * variant) const gchar * guide; const gchar * accessible_desc; const gchar * hint; - g_variant_get(variant, "(sisosssss)", &icon_name, &position, + const gchar * title; + g_variant_get(variant, "(sisossssss)", &icon_name, &position, &dbus_address, &dbus_object, &icon_theme_path, &label, - &guide, &accessible_desc, &hint); + &guide, &accessible_desc, &hint, &title); return application_added(self, icon_name, position, dbus_address, dbus_object, icon_theme_path, label, guide, accessible_desc, hint); } -- cgit v1.2.3 -- cgit v1.2.3