diff --git a/src/fbd-feedback-sound.c b/src/fbd-feedback-sound.c index 05c0242..d67187a 100644 --- a/src/fbd-feedback-sound.c +++ b/src/fbd-feedback-sound.c @@ -24,6 +24,7 @@ enum { PROP_0, PROP_EFFECT, PROP_FILE_NAME, + PROP_MEDIA_ROLE, PROP_LAST_PROP, }; static GParamSpec *props[PROP_LAST_PROP]; @@ -33,6 +34,7 @@ typedef struct _FbdFeedbackSound { char *effect; char *file_name; + char *media_role; } FbdFeedbackSound; G_DEFINE_TYPE (FbdFeedbackSound, fbd_feedback_sound, FBD_TYPE_FEEDBACK_BASE); @@ -91,6 +93,9 @@ fbd_feedback_sound_set_property (GObject *object, case PROP_FILE_NAME: self->file_name = g_value_dup_string (value); break; + case PROP_MEDIA_ROLE: + self->media_role = g_value_dup_string (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -112,6 +117,9 @@ fbd_feedback_sound_get_property (GObject *object, case PROP_FILE_NAME: g_value_set_string (value, fbd_feedback_sound_get_file_name (self)); break; + case PROP_MEDIA_ROLE: + g_value_set_string (value, fbd_feedback_sound_get_media_role (self)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -125,6 +133,7 @@ fbd_feedback_sound_finalize (GObject *object) g_clear_pointer (&self->effect, g_free); g_clear_pointer (&self->file_name, g_free); + g_clear_pointer (&self->media_role, g_free); G_OBJECT_CLASS (fbd_feedback_sound_parent_class)->finalize (object); } @@ -162,6 +171,15 @@ fbd_feedback_sound_class_init (FbdFeedbackSoundClass *klass) g_param_spec_string ("file-name", "", "", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + /** + * FbdFeedbackSound:media-role: + * + * The media-role to use when playing the sound. + */ + props[PROP_MEDIA_ROLE] = + g_param_spec_string ("media-role", "", "", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, PROP_LAST_PROP, props); } @@ -185,8 +203,16 @@ fbd_feedback_sound_get_effect (FbdFeedbackSound *self) return self->effect; } + const char * fbd_feedback_sound_get_file_name (FbdFeedbackSound *self) { return self->file_name; } + + +const char * +fbd_feedback_sound_get_media_role (FbdFeedbackSound *self) +{ + return self->media_role; +} diff --git a/src/fbd-feedback-sound.h b/src/fbd-feedback-sound.h index c713c05..4799255 100644 --- a/src/fbd-feedback-sound.h +++ b/src/fbd-feedback-sound.h @@ -16,5 +16,6 @@ G_DECLARE_FINAL_TYPE (FbdFeedbackSound, fbd_feedback_sound, FBD, FEEDBACK_SOUND, FbdFeedbackSound *fbd_feedback_sound_new_from_file_name (const char *filename); const char *fbd_feedback_sound_get_effect (FbdFeedbackSound *self); const char *fbd_feedback_sound_get_file_name (FbdFeedbackSound *self); +const char *fbd_feedback_sound_get_media_role (FbdFeedbackSound *self); G_END_DECLS diff --git a/tests/test-fbd-feedback-sound.c b/tests/test-fbd-feedback-sound.c index b2ee080..e80b7ce 100644 --- a/tests/test-fbd-feedback-sound.c +++ b/tests/test-fbd-feedback-sound.c @@ -22,12 +22,13 @@ test_fbd_feedback_sound_event (void) g_autoptr (GError) err = NULL; g_autoptr (JsonNode) node = NULL; GObject *object; - g_autofree char *event_name = NULL, *file_name = NULL, *effect = NULL; + g_autofree char *event_name = NULL, *file_name = NULL, *effect = NULL, *media_role = NULL; node = json_from_string ("{" " \"event-name\" : \"message-new-cellbroadcast\"," " \"type\" : \"Sound\"," - " \"effect\" : \"cellbroadcast\"" + " \"effect\" : \"cellbroadcast\"," + " \"media-role\" : \"emergency\"" "}", &err); g_assert_no_error (err); @@ -38,11 +39,13 @@ test_fbd_feedback_sound_event (void) "event-name", &event_name, "file-name", &file_name, "effect", &effect, + "media-role", &media_role, NULL); g_assert_cmpstr (event_name, ==, "message-new-cellbroadcast"); g_assert_cmpstr (effect, ==, "cellbroadcast"); g_assert_null (file_name); + g_assert_cmpstr (media_role, ==, "emergency"); g_assert_finalize_object (object); g_assert_finalize_object (manager);