aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc/e-activity.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/misc/e-activity.c')
-rw-r--r--widgets/misc/e-activity.c84
1 files changed, 55 insertions, 29 deletions
diff --git a/widgets/misc/e-activity.c b/widgets/misc/e-activity.c
index d40d5aacbe..7cd89a7c47 100644
--- a/widgets/misc/e-activity.c
+++ b/widgets/misc/e-activity.c
@@ -24,6 +24,8 @@
#include <stdarg.h>
#include <glib/gi18n.h>
+#include "e-util/e-util.h"
+
#define E_ACTIVITY_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_ACTIVITY, EActivityPrivate))
@@ -58,6 +60,7 @@ enum {
CANCELLED,
CLICKED,
COMPLETED,
+ DESCRIBE,
LAST_SIGNAL
};
@@ -84,6 +87,20 @@ activity_idle_complete_cb (EActivity *activity)
return FALSE;
}
+static gboolean
+activity_describe_accumulator (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer accu_data)
+{
+ const gchar *string;
+
+ string = g_value_get_string (handler_return);
+ g_value_set_string (return_accu, string);
+
+ return (string == NULL);
+}
+
static void
activity_set_property (GObject *object,
guint property_id,
@@ -211,6 +228,34 @@ activity_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
+static void
+activity_cancelled (EActivity *activity)
+{
+ activity->priv->cancelled = TRUE;
+
+ if (activity->priv->idle_id > 0) {
+ g_source_remove (activity->priv->idle_id);
+ activity->priv->idle_id = 0;
+ }
+}
+
+static void
+activity_completed (EActivity *activity)
+{
+ activity->priv->completed = TRUE;
+
+ if (activity->priv->idle_id > 0) {
+ g_source_remove (activity->priv->idle_id);
+ activity->priv->idle_id = 0;
+ }
+}
+
+static void
+activity_clicked (EActivity *activity)
+{
+ /* Allow subclasses to safely chain up. */
+}
+
static gchar *
activity_describe (EActivity *activity)
{
@@ -248,34 +293,6 @@ activity_describe (EActivity *activity)
}
static void
-activity_cancelled (EActivity *activity)
-{
- activity->priv->cancelled = TRUE;
-
- if (activity->priv->idle_id > 0) {
- g_source_remove (activity->priv->idle_id);
- activity->priv->idle_id = 0;
- }
-}
-
-static void
-activity_completed (EActivity *activity)
-{
- activity->priv->completed = TRUE;
-
- if (activity->priv->idle_id > 0) {
- g_source_remove (activity->priv->idle_id);
- activity->priv->idle_id = 0;
- }
-}
-
-static void
-activity_clicked (EActivity *activity)
-{
- /* Allow subclasses to safely chain up. */
-}
-
-static void
activity_class_init (EActivityClass *class)
{
GObjectClass *object_class;
@@ -288,10 +305,10 @@ activity_class_init (EActivityClass *class)
object_class->get_property = activity_get_property;
object_class->finalize = activity_finalize;
- class->describe = activity_describe;
class->cancelled = activity_cancelled;
class->completed = activity_completed;
class->clicked = activity_clicked;
+ class->describe = activity_describe;
g_object_class_install_property (
object_class,
@@ -398,6 +415,15 @@ activity_class_init (EActivityClass *class)
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+
+ signals[DESCRIBE] = g_signal_new (
+ "describe",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (EActivityClass, describe),
+ activity_describe_accumulator, NULL,
+ e_marshal_STRING__VOID,
+ G_TYPE_STRING, 0);
}
static void