Merge branch 'app-id-set' into 'main'
Add API to set app_id See merge request Librem5/feedbackd!111
This commit is contained in:
Vendored
+15
@@ -1,3 +1,18 @@
|
|||||||
|
feedbackd (0.2.0) experimental; urgency=medium
|
||||||
|
|
||||||
|
* build: Bump version to 0.2.0. We have a slight api change.
|
||||||
|
* lfb-event: Avoid allocation when getting profile.
|
||||||
|
We can return the const *. This makes it consistent with other getters.
|
||||||
|
This is an API change we didn't find any users and the API is declared
|
||||||
|
unstable.
|
||||||
|
* tests: Get properties all at once
|
||||||
|
* lfb-event: Add getter and setter for app-id.
|
||||||
|
For applications this is figured out automatically but notification
|
||||||
|
daemons and portal implementations might want to override it to have the
|
||||||
|
per-app feedback profile picked up automatically.
|
||||||
|
|
||||||
|
-- Guido Günther <agx@sigxcpu.org> Mon, 17 Apr 2023 12:14:14 +0200
|
||||||
|
|
||||||
feedbackd (0.1.1) experimental; urgency=medium
|
feedbackd (0.1.1) experimental; urgency=medium
|
||||||
|
|
||||||
* build: Avoid meson deprecation warning
|
* build: Avoid meson deprecation warning
|
||||||
|
|||||||
Vendored
+52
-2
@@ -1,3 +1,53 @@
|
|||||||
libfeedback-0.0.so.0 libfeedback-0.0-0 #MINVER#
|
libfeedback-0.0.so.0 libfeedback-0.0-0 #MINVER#
|
||||||
* Build-Depends-Package: libfeedback-dev
|
LIBFEEDBACK_0_0_0@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
*@LIBFEEDBACK_0_0_0 0.0.0+git20200707
|
lfb_event_end_feedback@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_end_feedback_async@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_end_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_end_reason_get_type@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_get_app_id@LIBFEEDBACK_0_0_0 0.2.0
|
||||||
|
lfb_event_get_end_reason@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_get_event@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_get_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_get_state@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_get_timeout@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_get_type@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_new@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_set_app_id@LIBFEEDBACK_0_0_0 0.2.0
|
||||||
|
lfb_event_set_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_set_timeout@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_state_get_type@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_trigger_feedback@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_trigger_feedback_async@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_event_trigger_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_call_end_feedback@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_call_end_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_call_end_feedback_sync@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_call_trigger_feedback@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_call_trigger_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_call_trigger_feedback_sync@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_complete_end_feedback@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_complete_trigger_feedback@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_dup_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_emit_feedback_ended@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_get_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_get_type@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_interface_info@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_override_properties@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_get_type@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_new@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_new_finish@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_new_for_bus@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_new_for_bus_finish@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_new_for_bus_sync@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_proxy_new_sync@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_set_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_skeleton_get_type@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_gdbus_feedback_skeleton_new@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_get_app_id@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_get_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_get_proxy@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_init@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_is_initted@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_set_app_id@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_set_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
lfb_uninit@LIBFEEDBACK_0_0_0 0.1.1
|
||||||
|
|||||||
+82
-7
@@ -79,6 +79,7 @@ enum {
|
|||||||
PROP_STATE,
|
PROP_STATE,
|
||||||
PROP_END_REASON,
|
PROP_END_REASON,
|
||||||
PROP_FEEDBACK_PROFILE,
|
PROP_FEEDBACK_PROFILE,
|
||||||
|
PROP_APP_ID,
|
||||||
PROP_LAST_PROP,
|
PROP_LAST_PROP,
|
||||||
};
|
};
|
||||||
static GParamSpec *props[PROP_LAST_PROP];
|
static GParamSpec *props[PROP_LAST_PROP];
|
||||||
@@ -95,6 +96,7 @@ typedef struct _LfbEvent {
|
|||||||
char *event;
|
char *event;
|
||||||
gint timeout;
|
gint timeout;
|
||||||
gchar *profile;
|
gchar *profile;
|
||||||
|
char *app_id;
|
||||||
|
|
||||||
guint id;
|
guint id;
|
||||||
LfbEventState state;
|
LfbEventState state;
|
||||||
@@ -221,6 +223,9 @@ lfb_event_set_property (GObject *object,
|
|||||||
case PROP_FEEDBACK_PROFILE:
|
case PROP_FEEDBACK_PROFILE:
|
||||||
lfb_event_set_feedback_profile (self, g_value_get_string (value));
|
lfb_event_set_feedback_profile (self, g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_APP_ID:
|
||||||
|
lfb_event_set_app_id (self, g_value_get_string (value));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -244,7 +249,10 @@ lfb_event_get_property (GObject *object,
|
|||||||
g_value_set_int (value, self->timeout);
|
g_value_set_int (value, self->timeout);
|
||||||
break;
|
break;
|
||||||
case PROP_FEEDBACK_PROFILE:
|
case PROP_FEEDBACK_PROFILE:
|
||||||
g_value_set_string (value, self->profile);
|
g_value_set_string (value, lfb_event_get_feedback_profile (self));
|
||||||
|
break;
|
||||||
|
case PROP_APP_ID:
|
||||||
|
g_value_set_string (value, lfb_event_get_app_id (self));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
@@ -262,6 +270,7 @@ lfb_event_finalize (GObject *object)
|
|||||||
|
|
||||||
g_clear_pointer (&self->event, g_free);
|
g_clear_pointer (&self->event, g_free);
|
||||||
g_clear_pointer (&self->profile, g_free);
|
g_clear_pointer (&self->profile, g_free);
|
||||||
|
g_clear_pointer (&self->app_id, g_free);
|
||||||
|
|
||||||
G_OBJECT_CLASS (lfb_event_parent_class)->finalize (object);
|
G_OBJECT_CLASS (lfb_event_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@@ -336,6 +345,20 @@ lfb_event_class_init (LfbEventClass *klass)
|
|||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LfbEvent:app-id:
|
||||||
|
*
|
||||||
|
* The application id to use for the event.
|
||||||
|
* [method@LfbEvent.set_feedback_profile]() for details.
|
||||||
|
*/
|
||||||
|
props[PROP_APP_ID] =
|
||||||
|
g_param_spec_string (
|
||||||
|
"app-id",
|
||||||
|
"Application Id",
|
||||||
|
"The Application id to use for this event",
|
||||||
|
NULL,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
|
g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -411,6 +434,7 @@ lfb_event_trigger_feedback (LfbEvent *self, GError **error)
|
|||||||
{
|
{
|
||||||
LfbGdbusFeedback *proxy;
|
LfbGdbusFeedback *proxy;
|
||||||
gboolean success;
|
gboolean success;
|
||||||
|
const char *app_id;
|
||||||
|
|
||||||
g_return_val_if_fail (LFB_IS_EVENT (self), FALSE);
|
g_return_val_if_fail (LFB_IS_EVENT (self), FALSE);
|
||||||
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
@@ -429,8 +453,9 @@ lfb_event_trigger_feedback (LfbEvent *self, GError **error)
|
|||||||
G_CONNECT_SWAPPED);
|
G_CONNECT_SWAPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app_id = self->app_id ?: lfb_get_app_id ();
|
||||||
success = lfb_gdbus_feedback_call_trigger_feedback_sync (proxy,
|
success = lfb_gdbus_feedback_call_trigger_feedback_sync (proxy,
|
||||||
lfb_get_app_id (),
|
app_id,
|
||||||
self->event,
|
self->event,
|
||||||
build_hints (self),
|
build_hints (self),
|
||||||
self->timeout,
|
self->timeout,
|
||||||
@@ -462,6 +487,7 @@ lfb_event_trigger_feedback_async (LfbEvent *self,
|
|||||||
{
|
{
|
||||||
LfbAsyncData *data;
|
LfbAsyncData *data;
|
||||||
LfbGdbusFeedback *proxy;
|
LfbGdbusFeedback *proxy;
|
||||||
|
const char *app_id;
|
||||||
|
|
||||||
g_return_if_fail (LFB_IS_EVENT (self));
|
g_return_if_fail (LFB_IS_EVENT (self));
|
||||||
if (!lfb_is_initted ())
|
if (!lfb_is_initted ())
|
||||||
@@ -481,8 +507,10 @@ lfb_event_trigger_feedback_async (LfbEvent *self,
|
|||||||
data = g_new0 (LfbAsyncData, 1);
|
data = g_new0 (LfbAsyncData, 1);
|
||||||
data->task = g_task_new (self, cancellable, callback, user_data);
|
data->task = g_task_new (self, cancellable, callback, user_data);
|
||||||
data->event = g_object_ref (self);
|
data->event = g_object_ref (self);
|
||||||
|
|
||||||
|
app_id = self->app_id ?: lfb_get_app_id ();
|
||||||
lfb_gdbus_feedback_call_trigger_feedback (proxy,
|
lfb_gdbus_feedback_call_trigger_feedback (proxy,
|
||||||
lfb_get_app_id (),
|
app_id,
|
||||||
self->event,
|
self->event,
|
||||||
build_hints (self),
|
build_hints (self),
|
||||||
self->timeout,
|
self->timeout,
|
||||||
@@ -716,13 +744,60 @@ lfb_event_set_feedback_profile (LfbEvent *self, const gchar *profile)
|
|||||||
* lfb_event_get_feedback_profile:
|
* lfb_event_get_feedback_profile:
|
||||||
* @self: The event
|
* @self: The event
|
||||||
*
|
*
|
||||||
* Returns:(transfer full): The set feedback profile to use for this
|
* Gets the set feedback profile. If no profile was set it returns
|
||||||
* event or %NULL.
|
* %NULL. The event uses the system wide profile in this case.
|
||||||
|
*
|
||||||
|
* Returns: The set feedback profile to use for this event or %NULL.
|
||||||
*/
|
*/
|
||||||
char *
|
const char *
|
||||||
lfb_event_get_feedback_profile (LfbEvent *self)
|
lfb_event_get_feedback_profile (LfbEvent *self)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (LFB_IS_EVENT (self), NULL);
|
g_return_val_if_fail (LFB_IS_EVENT (self), NULL);
|
||||||
|
|
||||||
return g_strdup (self->profile);
|
return self->profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* lfb_event_set_app_id:
|
||||||
|
* @self: The event
|
||||||
|
* @app_id: The application id to use
|
||||||
|
*
|
||||||
|
* Tells the feedback server to use the given application id for
|
||||||
|
* this event when it is submitted. The server might ignore this
|
||||||
|
* request. This can be used by notification daemons to honor per
|
||||||
|
* application settings automatically.
|
||||||
|
*
|
||||||
|
* The functions is usually not used by applications.
|
||||||
|
*
|
||||||
|
* A value of %NULL (the default) lets the server pick the profile.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
lfb_event_set_app_id (LfbEvent *self, const gchar *app_id)
|
||||||
|
{
|
||||||
|
g_return_if_fail (LFB_IS_EVENT (self));
|
||||||
|
|
||||||
|
if (!g_strcmp0 (self->app_id, app_id))
|
||||||
|
return;
|
||||||
|
|
||||||
|
g_free (self->app_id);
|
||||||
|
self->app_id = g_strdup (app_id);
|
||||||
|
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APP_ID]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* lfb_event_get_app_id:
|
||||||
|
* @self: The event
|
||||||
|
*
|
||||||
|
* Returns the app-id for this event. If no app-id has been explicitly
|
||||||
|
* set, %NULL is returned. The event uses the app-id returns by
|
||||||
|
* [func@lfb_get_app_id] in this case.
|
||||||
|
*
|
||||||
|
* Returns:(transfer none): The set app-id for this event or %NULL.
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
lfb_event_get_app_id (LfbEvent *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (LFB_IS_EVENT (self), NULL);
|
||||||
|
|
||||||
|
return self->app_id;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,9 @@ gboolean lfb_event_end_feedback_finish (LfbEvent *self,
|
|||||||
void lfb_event_set_timeout (LfbEvent *self, gint timeout);
|
void lfb_event_set_timeout (LfbEvent *self, gint timeout);
|
||||||
gint lfb_event_get_timeout (LfbEvent *self);
|
gint lfb_event_get_timeout (LfbEvent *self);
|
||||||
void lfb_event_set_feedback_profile (LfbEvent *self, const char *profile);
|
void lfb_event_set_feedback_profile (LfbEvent *self, const char *profile);
|
||||||
char *lfb_event_get_feedback_profile (LfbEvent *self);
|
const char *lfb_event_get_feedback_profile (LfbEvent *self);
|
||||||
|
void lfb_event_set_app_id (LfbEvent *self, const char *app_id);
|
||||||
|
const char *lfb_event_get_app_id (LfbEvent *self);
|
||||||
const char *lfb_event_get_event (LfbEvent *self);
|
const char *lfb_event_get_event (LfbEvent *self);
|
||||||
LfbEventState lfb_event_get_state (LfbEvent *self);
|
LfbEventState lfb_event_get_state (LfbEvent *self);
|
||||||
LfbEventEndReason lfb_event_get_end_reason (LfbEvent *self);
|
LfbEventEndReason lfb_event_get_end_reason (LfbEvent *self);
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
project('feedbackd', 'c',
|
project('feedbackd', 'c',
|
||||||
version : '0.1.1',
|
version : '0.2.0',
|
||||||
license : 'LGPLv3+',
|
license : 'LGPLv3+',
|
||||||
meson_version : '>= 0.56.0',
|
meson_version : '>= 0.56.0',
|
||||||
default_options : [
|
default_options : [
|
||||||
|
|||||||
+15
-8
@@ -14,6 +14,7 @@ test_lfb_event_props (void)
|
|||||||
g_autoptr(LfbEvent) event = NULL;
|
g_autoptr(LfbEvent) event = NULL;
|
||||||
g_autofree gchar *evname = NULL;
|
g_autofree gchar *evname = NULL;
|
||||||
g_autofree gchar *profile = NULL;
|
g_autofree gchar *profile = NULL;
|
||||||
|
g_autofree gchar *app_id = NULL;
|
||||||
gint timeout;
|
gint timeout;
|
||||||
|
|
||||||
g_assert_true (lfb_init (TEST_APP_ID, NULL));
|
g_assert_true (lfb_init (TEST_APP_ID, NULL));
|
||||||
@@ -21,23 +22,29 @@ test_lfb_event_props (void)
|
|||||||
event = lfb_event_new ("window-close");
|
event = lfb_event_new ("window-close");
|
||||||
g_assert_true (LFB_IS_EVENT (event));
|
g_assert_true (LFB_IS_EVENT (event));
|
||||||
|
|
||||||
g_object_get (event, "event", &evname, NULL);
|
g_object_get (event,
|
||||||
|
"event", &evname,
|
||||||
|
"timeout", &timeout,
|
||||||
|
"feedback-profile", &profile,
|
||||||
|
"app-id", &app_id,
|
||||||
|
NULL);
|
||||||
g_assert_cmpstr (evname, ==, "window-close");
|
g_assert_cmpstr (evname, ==, "window-close");
|
||||||
|
|
||||||
g_object_get (event, "timeout", &timeout, NULL);
|
|
||||||
g_assert_cmpint (timeout, ==, -1);
|
g_assert_cmpint (timeout, ==, -1);
|
||||||
|
g_assert_null (profile);
|
||||||
|
g_assert_null (app_id);
|
||||||
|
|
||||||
g_assert_cmpint (lfb_event_get_end_reason (event), ==, LFB_EVENT_END_REASON_NATURAL);
|
g_assert_cmpint (lfb_event_get_end_reason (event), ==, LFB_EVENT_END_REASON_NATURAL);
|
||||||
g_assert_cmpint (lfb_event_get_state (event), ==, LFB_EVENT_STATE_NONE);
|
g_assert_cmpint (lfb_event_get_state (event), ==, LFB_EVENT_STATE_NONE);
|
||||||
|
|
||||||
g_object_get (event, "feedback-profile", &profile, NULL);
|
|
||||||
g_assert_null (profile);
|
|
||||||
g_object_set (event, "feedback-profile", "full", NULL);
|
g_object_set (event, "feedback-profile", "full", NULL);
|
||||||
g_object_get (event, "feedback-profile", &profile, NULL);
|
g_object_get (event, "feedback-profile", &profile, NULL);
|
||||||
g_assert_cmpstr (profile, ==, "full");
|
g_assert_cmpstr (profile, ==, "full");
|
||||||
g_free (profile);
|
g_assert_cmpstr (lfb_event_get_feedback_profile (event), ==, "full");
|
||||||
profile = lfb_event_get_feedback_profile (event);
|
|
||||||
g_assert_cmpstr (profile, ==, "full");
|
g_object_set (event, "app-id", "com.example.foo", NULL);
|
||||||
|
g_object_get (event, "app-id", &app_id, NULL);
|
||||||
|
g_assert_cmpstr (app_id, ==, "com.example.foo");
|
||||||
|
g_assert_cmpstr (lfb_event_get_app_id (event), ==, "com.example.foo");
|
||||||
|
|
||||||
lfb_uninit ();
|
lfb_uninit ();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user