feedback-manager: Prepare for per event hints
Move feedback profile level into a separate function for that.
This commit is contained in:
committed by
Guido Gunther
parent
9c667bbc6c
commit
421c163bdd
@@ -211,6 +211,19 @@ on_feedbackd_setting_changed (FbdFeedbackManager *self,
|
|||||||
fbd_feedback_manager_set_profile (self, profile);
|
fbd_feedback_manager_set_profile (self, profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static FbdFeedbackProfileLevel
|
||||||
|
get_max_level (FbdFeedbackProfileLevel global_level,
|
||||||
|
FbdFeedbackProfileLevel app_level,
|
||||||
|
FbdFeedbackProfileLevel event_level)
|
||||||
|
{
|
||||||
|
FbdFeedbackProfileLevel level;
|
||||||
|
|
||||||
|
/* Individual events and apps can select lower levels than the global level but not higher ones */
|
||||||
|
level = global_level > app_level ? app_level : global_level;
|
||||||
|
level = level > event_level ? event_level : level;
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object,
|
fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object,
|
||||||
GDBusMethodInvocation *invocation,
|
GDBusMethodInvocation *invocation,
|
||||||
@@ -223,7 +236,7 @@ fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object,
|
|||||||
FbdEvent *event;
|
FbdEvent *event;
|
||||||
GSList *feedbacks, *l;
|
GSList *feedbacks, *l;
|
||||||
gint event_id;
|
gint event_id;
|
||||||
FbdFeedbackProfileLevel app_level, level;
|
FbdFeedbackProfileLevel app_level, level, hint_level = FBD_FEEDBACK_PROFILE_LEVEL_FULL;
|
||||||
|
|
||||||
g_debug ("Event '%s' for '%s'", arg_event, arg_app_id);
|
g_debug ("Event '%s' for '%s'", arg_event, arg_app_id);
|
||||||
|
|
||||||
@@ -254,11 +267,10 @@ fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object,
|
|||||||
event = fbd_event_new (event_id, arg_app_id, arg_event, arg_timeout);
|
event = fbd_event_new (event_id, arg_app_id, arg_event, arg_timeout);
|
||||||
g_hash_table_insert (self->events, GUINT_TO_POINTER (event_id), event);
|
g_hash_table_insert (self->events, GUINT_TO_POINTER (event_id), event);
|
||||||
|
|
||||||
/* If user configured a lower feedback level for this app honor that */
|
|
||||||
app_level = app_get_feedback_level (arg_app_id);
|
app_level = app_get_feedback_level (arg_app_id);
|
||||||
level = self->level > app_level ? app_level : self->level;
|
level = get_max_level (self->level, app_level, hint_level);
|
||||||
feedbacks = fbd_feedback_theme_lookup_feedback (self->theme, level, event);
|
|
||||||
|
|
||||||
|
feedbacks = fbd_feedback_theme_lookup_feedback (self->theme, level, event);
|
||||||
if (feedbacks) {
|
if (feedbacks) {
|
||||||
for (l = feedbacks; l; l = l->next) {
|
for (l = feedbacks; l; l = l->next) {
|
||||||
FbdFeedbackBase *fb = l->data;
|
FbdFeedbackBase *fb = l->data;
|
||||||
|
|||||||
Reference in New Issue
Block a user