aboutsummaryrefslogtreecommitdiff
path: root/src/application-service-appstore.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-02-24 22:12:02 -0600
committerTed Gould <ted@gould.cx>2011-02-24 22:12:02 -0600
commit87fb9978433b41004b66772284e4f4f64b53313b (patch)
tree8a1498bb9b2130549daaeea7c2ffde79611f86db /src/application-service-appstore.c
parentcd55d421ca00a32f8ee1f0a4339eec23160284c7 (diff)
parent63807a063a5545df5b6dc5ea51e8d3dc895eb014 (diff)
downloadayatana-indicator-application-87fb9978433b41004b66772284e4f4f64b53313b.tar.gz
ayatana-indicator-application-87fb9978433b41004b66772284e4f4f64b53313b.tar.bz2
ayatana-indicator-application-87fb9978433b41004b66772284e4f4f64b53313b.zip
Import upstream version 0.2.94
Diffstat (limited to 'src/application-service-appstore.c')
-rw-r--r--src/application-service-appstore.c63
1 files changed, 44 insertions, 19 deletions
diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c
index c9e803f..10feef5 100644
--- a/src/application-service-appstore.c
+++ b/src/application-service-appstore.c
@@ -24,7 +24,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config.h"
#endif
-#include "libindicator/indicator-object.h"
+#include <libindicator/indicator-object.h>
#include "libappindicator/app-indicator.h"
#include "app-indicator-enum-types.h"
#include "application-service-appstore.h"
@@ -43,7 +43,9 @@ static void props_cb (GObject * object, GAsyncResult * res, gpointer user_data);
#define NOTIFICATION_ITEM_PROP_CATEGORY "Category"
#define NOTIFICATION_ITEM_PROP_STATUS "Status"
#define NOTIFICATION_ITEM_PROP_ICON_NAME "IconName"
+#define NOTIFICATION_ITEM_PROP_ICON_DESC "IconAccessibleDesc"
#define NOTIFICATION_ITEM_PROP_AICON_NAME "AttentionIconName"
+#define NOTIFICATION_ITEM_PROP_AICON_DESC "AttentionAccessibleDesc"
#define NOTIFICATION_ITEM_PROP_ICON_THEME_PATH "IconThemePath"
#define NOTIFICATION_ITEM_PROP_MENU "Menu"
#define NOTIFICATION_ITEM_PROP_LABEL "XAyatanaLabel"
@@ -99,7 +101,9 @@ struct _Application {
gboolean validated; /* Whether we've gotten all the parameters and they look good. */
AppIndicatorStatus status;
gchar * icon;
+ gchar * icon_desc;
gchar * aicon;
+ gchar * aicon_desc;
gchar * menu;
gchar * icon_theme_path;
gchar * label;
@@ -163,7 +167,7 @@ application_service_appstore_class_init (ApplicationServiceAppstoreClass *klass)
node_info = g_dbus_node_info_new_for_xml(_application_service, &error);
if (error != NULL) {
- g_error("Unable to parse Application Service Interface description: %s", error->message);
+ g_critical("Unable to parse Application Service Interface description: %s", error->message);
g_error_free(error);
}
}
@@ -172,7 +176,7 @@ application_service_appstore_class_init (ApplicationServiceAppstoreClass *klass)
interface_info = g_dbus_node_info_lookup_interface(node_info, INDICATOR_APPLICATION_DBUS_IFACE);
if (interface_info == NULL) {
- g_error("Unable to find interface '" INDICATOR_APPLICATION_DBUS_IFACE "'");
+ g_critical("Unable to find interface '" INDICATOR_APPLICATION_DBUS_IFACE "'");
}
}
@@ -215,7 +219,7 @@ bus_get_cb (GObject * object, GAsyncResult * res, gpointer user_data)
GDBusConnection * connection = g_bus_get_finish(res, &error);
if (error != NULL) {
- g_error("OMG! Unable to get a connection to DBus: %s", error->message);
+ g_critical("OMG! Unable to get a connection to DBus: %s", error->message);
g_error_free(error);
return;
}
@@ -240,7 +244,7 @@ bus_get_cb (GObject * object, GAsyncResult * res, gpointer user_data)
&error);
if (error != NULL) {
- g_error("Unable to register the object to DBus: %s", error->message);
+ g_critical("Unable to register the object to DBus: %s", error->message);
g_error_free(error);
return;
}
@@ -430,6 +434,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res,
ApplicationServiceAppstorePrivate * priv = app->appstore->priv;
GVariant * menu = NULL, * id = NULL, * category = NULL,
* status = NULL, * icon_name = NULL, * aicon_name = NULL,
+ * icon_desc = NULL, * aicon_desc = NULL,
* icon_theme_path = NULL, * index = NULL, * label = NULL,
* guide = NULL;
@@ -441,7 +446,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res,
}
if (error != NULL) {
- g_error("Could not grab DBus properties for %s: %s", app->dbus_name, error->message);
+ g_critical("Could not grab DBus properties for %s: %s", app->dbus_name, error->message);
g_error_free(error);
if (!app->validated)
application_free(app);
@@ -464,8 +469,12 @@ got_all_properties (GObject * source_object, GAsyncResult * res,
status = g_variant_ref(value);
} else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_NAME) == 0) {
icon_name = g_variant_ref(value);
+ } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_DESC) == 0) {
+ icon_desc = g_variant_ref(value);
} else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_AICON_NAME) == 0) {
aicon_name = g_variant_ref(value);
+ } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_AICON_DESC) == 0) {
+ aicon_desc = g_variant_ref(value);
} else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_THEME_PATH) == 0) {
icon_theme_path = g_variant_ref(value);
} else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ORDERING_INDEX) == 0) {
@@ -543,7 +552,9 @@ got_all_properties (GObject * source_object, GAsyncResult * res,
if (category) g_variant_unref (category);
if (status) g_variant_unref (status);
if (icon_name) g_variant_unref (icon_name);
+ if (icon_desc) g_variant_unref (icon_desc);
if (aicon_name) g_variant_unref (aicon_name);
+ if (aicon_desc) g_variant_unref (aicon_desc);
if (icon_theme_path) g_variant_unref (icon_theme_path);
if (index) g_variant_unref (index);
if (label) g_variant_unref (label);
@@ -707,8 +718,11 @@ application_free (Application * app)
if (app->icon != NULL) {
g_free(app->icon);
}
- if (app->aicon != NULL) {
- g_free(app->aicon);
+ if (app->icon_desc != NULL) {
+ g_free(app->icon_desc);
+ }
+ if (app->aicon_desc != NULL) {
+ g_free(app->aicon_desc);
}
if (app->menu != NULL) {
g_free(app->menu);
@@ -773,7 +787,7 @@ emit_signal (ApplicationServiceAppstore * appstore, const gchar * name,
&error);
if (error != NULL) {
- g_error("Unable to send %s signal: %s", name, error->message);
+ g_critical("Unable to send %s signal: %s", name, error->message);
g_error_free(error);
return;
}
@@ -825,26 +839,37 @@ apply_status (Application * app)
} else {
/* Figure out which icon we should be using */
gchar * newicon = app->icon;
+ gchar * newdesc = app->icon_desc;
if (app->status == APP_INDICATOR_STATUS_ATTENTION && app->aicon != NULL && app->aicon[0] != '\0') {
newicon = app->aicon;
+ newdesc = app->aicon_desc;
+ }
+
+ if (newdesc == NULL) {
+ newdesc = "";
}
/* Determine whether we're already shown or not */
if (app->visible_state == VISIBLE_STATE_HIDDEN) {
/* Put on panel */
emit_signal (appstore, "ApplicationAdded",
- g_variant_new ("(sisosss)", newicon,
+ g_variant_new ("(sisossss)", newicon,
get_position(app),
app->dbus_name, app->menu,
app->icon_theme_path,
- app->label, app->guide));
+ app->label, app->guide,
+ newdesc));
} else {
/* Icon update */
gint position = get_position(app);
if (position == -1) return;
emit_signal (appstore, "ApplicationIconChanged",
- g_variant_new ("(is)", position, newicon));
+ g_variant_new ("(iss)", position, newicon, newdesc));
+ emit_signal (appstore, "ApplicationLabelChanged",
+ g_variant_new ("(iss)", position,
+ app->label != NULL ? app->label : "",
+ app->guide != NULL ? app->guide : ""));
}
}
@@ -1021,7 +1046,7 @@ dbus_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
}
if (error != NULL) {
- g_error("Could not grab DBus proxy for %s: %s", app->dbus_name, error->message);
+ g_critical("Could not grab DBus proxy for %s: %s", app->dbus_name, error->message);
g_error_free(error);
application_free(app);
return;
@@ -1077,7 +1102,7 @@ props_cb (GObject * object, GAsyncResult * res, gpointer user_data)
}
if (error != NULL) {
- g_error("Could not grab Properties DBus proxy for %s: %s", app->dbus_name, error->message);
+ g_critical("Could not grab Properties DBus proxy for %s: %s", app->dbus_name, error->message);
g_error_free(error);
application_free(app);
return;
@@ -1212,18 +1237,18 @@ get_applications (ApplicationServiceAppstore * appstore)
continue;
}
- g_variant_builder_add (&builder, "(sisosss)", app->icon,
+ g_variant_builder_add (&builder, "(sisossss)", app->icon,
position++, app->dbus_name, app->menu,
app->icon_theme_path, app->label,
- app->guide);
+ app->guide, app->icon_desc);
}
out = g_variant_builder_end(&builder);
} else {
GError * error = NULL;
- out = g_variant_parse(g_variant_type_new("a(sisosss)"), "[]", NULL, NULL, &error);
+ out = g_variant_parse(g_variant_type_new("a(sisossss)"), "[]", NULL, NULL, &error);
if (error != NULL) {
- g_warning("Unable to parse '[]' as a 'a(sisosss)': %s", error->message);
+ g_warning("Unable to parse '[]' as a 'a(sisossss)': %s", error->message);
out = NULL;
g_error_free(error);
}
@@ -1416,7 +1441,7 @@ approver_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
}
if (error != NULL) {
- g_error("Could not grab DBus proxy for approver: %s", error->message);
+ g_critical("Could not grab DBus proxy for approver: %s", error->message);
g_error_free(error);
return;
}