fbd-event: Add sender property
This allows us to store the DBus sender
This commit is contained in:
+39
-1
@@ -25,6 +25,7 @@ enum {
|
||||
PROP_END_REASON,
|
||||
PROP_FEEDBACKS_ENDED,
|
||||
PROP_TIMEOUT,
|
||||
PROP_SENDER,
|
||||
PROP_LAST_PROP,
|
||||
};
|
||||
static GParamSpec *props[PROP_LAST_PROP];
|
||||
@@ -35,6 +36,7 @@ typedef struct _FbdEvent {
|
||||
guint id;
|
||||
char *app_id;
|
||||
char *event;
|
||||
char *sender;
|
||||
|
||||
int timeout;
|
||||
gboolean expired;
|
||||
@@ -118,6 +120,10 @@ fbd_event_set_property (GObject *object,
|
||||
case PROP_END_REASON:
|
||||
fbd_event_set_end_reason (self, g_value_get_enum (value));
|
||||
break;
|
||||
case PROP_SENDER:
|
||||
g_free (self->sender);
|
||||
self->sender = g_value_dup_string (value);
|
||||
break;
|
||||
case PROP_FEEDBACKS_ENDED:
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
@@ -152,6 +158,9 @@ fbd_event_get_property (GObject *object,
|
||||
case PROP_FEEDBACKS_ENDED:
|
||||
g_value_set_boolean (value, self->ended);
|
||||
break;
|
||||
case PROP_SENDER:
|
||||
g_value_set_string (value, self->sender);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
break;
|
||||
@@ -181,6 +190,7 @@ fbd_event_finalize (GObject *object)
|
||||
|
||||
g_clear_pointer (&self->app_id, g_free);
|
||||
g_clear_pointer (&self->event, g_free);
|
||||
g_clear_pointer (&self->sender, g_free);
|
||||
|
||||
G_OBJECT_CLASS (fbd_event_parent_class)->finalize (object);
|
||||
}
|
||||
@@ -245,6 +255,19 @@ fbd_event_class_init (FbdEventClass *klass)
|
||||
FBD_EVENT_END_REASON_NATURAL,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||
|
||||
/**
|
||||
* FbdEvent:Sender:
|
||||
*
|
||||
* The DBus name of the sender
|
||||
*/
|
||||
props[PROP_SENDER] =
|
||||
g_param_spec_string (
|
||||
"sender",
|
||||
"",
|
||||
"",
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||
|
||||
g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
|
||||
|
||||
/**
|
||||
@@ -267,13 +290,14 @@ fbd_event_init (FbdEvent *self)
|
||||
}
|
||||
|
||||
FbdEvent *
|
||||
fbd_event_new (int id, const char *app_id, const char *event, int timeout)
|
||||
fbd_event_new (int id, const char *app_id, const char *event, int timeout, const char *sender)
|
||||
{
|
||||
return FBD_EVENT (g_object_new (FBD_TYPE_EVENT,
|
||||
"id", id,
|
||||
"app_id", app_id,
|
||||
"event", event,
|
||||
"timeout", timeout,
|
||||
"sender", sender,
|
||||
NULL));
|
||||
}
|
||||
|
||||
@@ -447,3 +471,17 @@ fbd_event_get_end_reason (FbdEvent *self)
|
||||
|
||||
return self->end_reason;
|
||||
}
|
||||
|
||||
/**
|
||||
* fbd_event_get_sender:
|
||||
* @self: The Event
|
||||
*
|
||||
* Returns: The DBus sender that triggered the event.
|
||||
*/
|
||||
const char *
|
||||
fbd_event_get_sender (FbdEvent *self)
|
||||
{
|
||||
g_return_val_if_fail (FBD_IS_EVENT (self), FBD_EVENT_END_REASON_NATURAL);
|
||||
|
||||
return self->sender;
|
||||
}
|
||||
|
||||
+2
-1
@@ -33,7 +33,7 @@ typedef enum _FbdEventTimeout {
|
||||
|
||||
G_DECLARE_FINAL_TYPE (FbdEvent, fbd_event, FBD, EVENT, GObject);
|
||||
|
||||
FbdEvent *fbd_event_new (gint id, const char *app_id, const char *event, int timeout);
|
||||
FbdEvent *fbd_event_new (gint id, const char *app_id, const char *event, int timeout, const char *sender);
|
||||
const char *fbd_event_get_event (FbdEvent *event);
|
||||
const char *fbd_event_get_app_id (FbdEvent *event);
|
||||
guint fbd_event_get_id (FbdEvent *event);
|
||||
@@ -48,5 +48,6 @@ int fbd_event_remove_feedback (FbdEvent *self,
|
||||
void fbd_event_run_feedbacks (FbdEvent *self);
|
||||
void fbd_event_end_feedbacks (FbdEvent *self);
|
||||
gboolean fbd_event_get_feedbacks_ended (FbdEvent *self);
|
||||
const char *fbd_event_get_sender (FbdEvent *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
+10
-5
@@ -15,10 +15,11 @@ test_fbd_event (void)
|
||||
g_autoptr(FbdEvent) event = NULL;
|
||||
g_autofree gchar *appid = NULL;
|
||||
g_autofree gchar *name = NULL;
|
||||
g_autofree gchar *sender = NULL;
|
||||
FbdEventEndReason reason;
|
||||
gint timeout;
|
||||
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, 2);
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, 2, "sender-id");
|
||||
|
||||
g_assert_true (FBD_IS_EVENT (event));
|
||||
g_object_get (event,
|
||||
@@ -26,6 +27,7 @@ test_fbd_event (void)
|
||||
"event", &name,
|
||||
"app-id", &appid,
|
||||
"timeout", &timeout,
|
||||
"sender", &sender,
|
||||
NULL);
|
||||
|
||||
g_assert_cmpstr (fbd_event_get_event (event), ==, TEST_EVENT);
|
||||
@@ -37,6 +39,9 @@ test_fbd_event (void)
|
||||
g_assert_cmpint (fbd_event_get_timeout (event), ==, timeout);
|
||||
g_assert_cmpint (timeout, ==, 2);
|
||||
|
||||
g_assert_cmpstr (fbd_event_get_sender (event), ==, sender);
|
||||
g_assert_cmpstr (sender, ==, "sender-id");
|
||||
|
||||
g_assert_cmpint (fbd_event_get_end_reason (event), ==, FBD_EVENT_END_REASON_NATURAL);
|
||||
g_assert_cmpint (reason, ==, FBD_EVENT_END_REASON_NATURAL);
|
||||
}
|
||||
@@ -49,7 +54,7 @@ test_fbd_event_feedback (void)
|
||||
g_autoptr(FbdFeedbackDummy) feedback1 = NULL;
|
||||
g_autoptr(FbdFeedbackDummy) feedback2 = NULL;
|
||||
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, -1);
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, -1, NULL);
|
||||
feedback1 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
feedback2 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
|
||||
@@ -96,7 +101,7 @@ test_fbd_event_feedback_ended (void)
|
||||
g_autoptr(FbdFeedbackDummy) feedback2 = NULL;
|
||||
gboolean ended = FALSE;
|
||||
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, FBD_EVENT_TIMEOUT_ONESHOT);
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, FBD_EVENT_TIMEOUT_ONESHOT, NULL);
|
||||
feedback1 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
fbd_event_add_feedback (event, FBD_FEEDBACK_BASE(feedback1));
|
||||
feedback2 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
@@ -117,7 +122,7 @@ test_fbd_event_feedback_loop (void)
|
||||
g_autoptr(FbdFeedbackDummy) feedback2 = NULL;
|
||||
gboolean ended = FALSE;
|
||||
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, FBD_EVENT_TIMEOUT_LOOP);
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, FBD_EVENT_TIMEOUT_LOOP, NULL);
|
||||
feedback1 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
fbd_event_add_feedback (event, FBD_FEEDBACK_BASE(feedback1));
|
||||
feedback2 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
@@ -139,7 +144,7 @@ test_fbd_event_feedback_timeout (void)
|
||||
g_autoptr(FbdFeedbackDummy) feedback2 = NULL;
|
||||
gboolean ended = FALSE;
|
||||
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, 1);
|
||||
event = fbd_event_new (1, TEST_APP_ID, TEST_EVENT, 1, NULL);
|
||||
feedback1 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
fbd_event_add_feedback (event, FBD_FEEDBACK_BASE(feedback1));
|
||||
feedback2 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, NULL);
|
||||
|
||||
Reference in New Issue
Block a user