libfeedback: Allow to set important hint
This commit is contained in:
committed by
Guido Günther
parent
e6845a52d3
commit
14ffd9722d
Vendored
+2
@@ -9,12 +9,14 @@ libfeedback-0.0.so.0 libfeedback-0.0-0 #MINVER#
|
||||
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_important@LIBFEEDBACK_0_0_0 0.2.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_important@LIBFEEDBACK_0_0_0 0.2.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
|
||||
|
||||
@@ -79,6 +79,7 @@ enum {
|
||||
PROP_STATE,
|
||||
PROP_END_REASON,
|
||||
PROP_FEEDBACK_PROFILE,
|
||||
PROP_IMPORTANT,
|
||||
PROP_APP_ID,
|
||||
PROP_LAST_PROP,
|
||||
};
|
||||
@@ -96,6 +97,7 @@ typedef struct _LfbEvent {
|
||||
char *event;
|
||||
gint timeout;
|
||||
gchar *profile;
|
||||
gboolean important;
|
||||
char *app_id;
|
||||
|
||||
guint id;
|
||||
@@ -139,6 +141,8 @@ build_hints (LfbEvent *self)
|
||||
g_variant_builder_init (&hints_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
if (self->profile)
|
||||
g_variant_builder_add (&hints_builder, "{sv}", "profile", g_variant_new_string (self->profile));
|
||||
if (self->important)
|
||||
g_variant_builder_add (&hints_builder, "{sv}", "important", g_variant_new_boolean (self->important));
|
||||
return g_variant_builder_end (&hints_builder);
|
||||
}
|
||||
|
||||
@@ -223,6 +227,9 @@ lfb_event_set_property (GObject *object,
|
||||
case PROP_FEEDBACK_PROFILE:
|
||||
lfb_event_set_feedback_profile (self, g_value_get_string (value));
|
||||
break;
|
||||
case PROP_IMPORTANT:
|
||||
lfb_event_set_important (self, g_value_get_boolean (value));
|
||||
break;
|
||||
case PROP_APP_ID:
|
||||
lfb_event_set_app_id (self, g_value_get_string (value));
|
||||
break;
|
||||
@@ -251,6 +258,9 @@ lfb_event_get_property (GObject *object,
|
||||
case PROP_FEEDBACK_PROFILE:
|
||||
g_value_set_string (value, lfb_event_get_feedback_profile (self));
|
||||
break;
|
||||
case PROP_IMPORTANT:
|
||||
g_value_set_boolean (value, lfb_event_get_important (self));
|
||||
break;
|
||||
case PROP_APP_ID:
|
||||
g_value_set_string (value, lfb_event_get_app_id (self));
|
||||
break;
|
||||
@@ -345,6 +355,20 @@ lfb_event_class_init (LfbEventClass *klass)
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||
|
||||
/**
|
||||
* LfbEvent:important:
|
||||
*
|
||||
* Whether to flag this event as important.
|
||||
* [method@LfbEvent.set_imporant] for details.
|
||||
*/
|
||||
props[PROP_IMPORTANT] =
|
||||
g_param_spec_boolean (
|
||||
"important",
|
||||
"Important",
|
||||
"Whether to flags this event as important",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
|
||||
|
||||
/**
|
||||
* LfbEvent:app-id:
|
||||
*
|
||||
@@ -757,6 +781,44 @@ lfb_event_get_feedback_profile (LfbEvent *self)
|
||||
return self->profile;
|
||||
}
|
||||
|
||||
/**
|
||||
* lfb_event_set_important:
|
||||
* @self: The event
|
||||
* @important: Whether to flag this event as important
|
||||
*
|
||||
* Tells the feedback server that the sender deems this to be an
|
||||
* important event. A feedback server might allow the sender to
|
||||
* override the current feedback level when this is set.
|
||||
*/
|
||||
void
|
||||
lfb_event_set_important (LfbEvent *self, gboolean important)
|
||||
{
|
||||
g_return_if_fail (LFB_IS_EVENT (self));
|
||||
|
||||
if (self->important == important)
|
||||
return;
|
||||
|
||||
self->important = important;
|
||||
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_IMPORTANT]);
|
||||
}
|
||||
|
||||
/**
|
||||
* lfb_event_get_important:
|
||||
* @self: The event
|
||||
*
|
||||
* Gets the set feedback profile. If no profile was set it returns
|
||||
* %NULL. The event uses the system wide profile in this case.
|
||||
*
|
||||
* Returns: The set feedback profile to use for this event or %NULL.
|
||||
*/
|
||||
gboolean
|
||||
lfb_event_get_important (LfbEvent *self)
|
||||
{
|
||||
g_return_val_if_fail (LFB_IS_EVENT (self), FALSE);
|
||||
|
||||
return self->important;
|
||||
}
|
||||
|
||||
/**
|
||||
* lfb_event_set_app_id:
|
||||
* @self: The event
|
||||
|
||||
@@ -75,9 +75,12 @@ void lfb_event_set_timeout (LfbEvent *self, gint timeout);
|
||||
gint lfb_event_get_timeout (LfbEvent *self);
|
||||
void lfb_event_set_feedback_profile (LfbEvent *self, const char *profile);
|
||||
const char *lfb_event_get_feedback_profile (LfbEvent *self);
|
||||
void lfb_event_set_important (LfbEvent *self, gboolean important);
|
||||
gboolean lfb_event_get_important (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);
|
||||
|
||||
LfbEventState lfb_event_get_state (LfbEvent *self);
|
||||
LfbEventEndReason lfb_event_get_end_reason (LfbEvent *self);
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ test_lfb_event_props (void)
|
||||
g_autofree gchar *evname = NULL;
|
||||
g_autofree gchar *profile = NULL;
|
||||
g_autofree gchar *app_id = NULL;
|
||||
gboolean important;
|
||||
gint timeout;
|
||||
|
||||
g_assert_true (lfb_init (TEST_APP_ID, NULL));
|
||||
@@ -27,10 +28,12 @@ test_lfb_event_props (void)
|
||||
"timeout", &timeout,
|
||||
"feedback-profile", &profile,
|
||||
"app-id", &app_id,
|
||||
"important", &important,
|
||||
NULL);
|
||||
g_assert_cmpstr (evname, ==, "window-close");
|
||||
g_assert_cmpint (timeout, ==, -1);
|
||||
g_assert_null (profile);
|
||||
g_assert_false (important);
|
||||
g_assert_null (app_id);
|
||||
|
||||
g_assert_cmpint (lfb_event_get_end_reason (event), ==, LFB_EVENT_END_REASON_NATURAL);
|
||||
|
||||
@@ -238,6 +238,7 @@ test_lfb_integration_event_async (void)
|
||||
lfb_event_set_timeout (event10, 1);
|
||||
g_assert_cmpint (lfb_event_get_timeout (event10), ==, 1);
|
||||
lfb_event_set_feedback_profile (event10, "quiet");
|
||||
lfb_event_set_important (event10, FALSE);
|
||||
g_signal_connect (event10, "feedback-ended", (GCallback)on_feedback_ended, &cmp1);
|
||||
|
||||
/* The async callback ends the main loop */
|
||||
|
||||
Reference in New Issue
Block a user