From 58221c741605fad68948c73bb084402312e6fe95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Wed, 11 Dec 2024 12:46:48 +0100 Subject: [PATCH] feedback-vibra: Allow derived classes to override duration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows the derived classes to perform the length duration calculation. The parent class can thus still keep track of the total feedback length. Signed-off-by: Guido Günther --- src/fbd-feedback-vibra-priv.h | 14 ++++++++++++++ src/fbd-feedback-vibra.c | 29 +++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/fbd-feedback-vibra-priv.h diff --git a/src/fbd-feedback-vibra-priv.h b/src/fbd-feedback-vibra-priv.h new file mode 100644 index 0000000..445bf3d --- /dev/null +++ b/src/fbd-feedback-vibra-priv.h @@ -0,0 +1,14 @@ +/* + * Copyright (C) 2024 The Phosh Developers + * + * SPDX-License-Identifier: GPL-3.0+ + */ +#pragma once + +#include + +G_BEGIN_DECLS + +void fbd_feedback_vibra_set_duration (FbdFeedbackVibra *self, guint duration); + +G_END_DECLS diff --git a/src/fbd-feedback-vibra.c b/src/fbd-feedback-vibra.c index e771e49..a04a902 100644 --- a/src/fbd-feedback-vibra.c +++ b/src/fbd-feedback-vibra.c @@ -8,6 +8,7 @@ #include "fbd-enums.h" #include "fbd-feedback-vibra.h" +#include "fbd-feedback-vibra-priv.h" #include "fbd-feedback-manager.h" /** @@ -133,13 +134,16 @@ fbd_feedback_vibra_class_init (FbdFeedbackVibraClass *klass) base_class->run = fbd_feedback_vibra_run; base_class->end = fbd_feedback_vibra_end; + /** + * FbdFeedbackVibra:duration: + * + * The total duration of the feedback event in milliseconds. + */ props[PROP_DURATION] = g_param_spec_uint ( - "duration", - "Duration", - "Vibra event duration in msecs", + "duration", "", "", 0, G_MAXUINT, FBD_FEEDBACK_VIBRA_DEFAULT_DURATION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, PROP_LAST_PROP, props); } @@ -158,3 +162,20 @@ fbd_feedback_vibra_get_duration (FbdFeedbackVibra *self) priv = fbd_feedback_vibra_get_instance_private (self); return priv->duration; } + + +void +fbd_feedback_vibra_set_duration (FbdFeedbackVibra *self, guint duration) +{ + FbdFeedbackVibraPrivate *priv; + + g_return_if_fail (FBD_IS_FEEDBACK_VIBRA (self)); + + priv = fbd_feedback_vibra_get_instance_private (self); + + if (duration == priv->duration) + return; + + priv->duration = duration; + g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DURATION]); +}