+static void
+_add_rule (ModestDimmingRulesGroup *self,
+ ModestDimmingRule *rule,
+ ModestWindow *window)
+{
+ ModestDimmingRulesGroupPrivate *priv;
+ GtkWidget *widget = NULL;
+ const gchar *action_path = NULL;
+
+ g_return_if_fail (MODEST_IS_DIMMING_RULES_GROUP(self));
+ g_return_if_fail (MODEST_IS_WINDOW(window));
+ g_return_if_fail (MODEST_IS_DIMMING_RULE (rule));
+
+ priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self);
+
+ /* Set window to process dimming rules */
+ priv->window = MODEST_WINDOW (window);
+
+ widget = modest_dimming_rule_get_widget (rule);
+#ifndef MODEST_TOOLKIT_GTK
+ /* Connect insensitive-presss handler to show notifications */
+ g_signal_connect (G_OBJECT (widget), "insensitive-press",
+ G_CALLBACK (_insensitive_press_callback),
+ rule);
+#endif
+ /* Register new dimming rule */
+ modest_dimming_rule_set_group (rule, self);
+ action_path = modest_dimming_rule_get_action_path (rule);
+ if (action_path)
+ g_hash_table_insert (priv->rules_map, g_strdup(action_path), rule);
+ else
+ priv->widget_rules = g_slist_prepend (priv->widget_rules, rule);
+}
+
+void
+modest_dimming_rules_group_add_widget_rule (ModestDimmingRulesGroup *self,
+ GtkWidget *widget,
+ GCallback callback,
+ ModestWindow *window)
+{
+ ModestDimmingRulesGroupPrivate *priv;
+ ModestDimmingRule *dim_rule = NULL;
+
+ g_return_if_fail (MODEST_IS_DIMMING_RULES_GROUP(self));
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (MODEST_IS_WINDOW(window));
+
+ priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self);
+
+ /* Set window to process dimming rules */
+ priv->window = MODEST_WINDOW (window);
+
+ dim_rule = modest_dimming_rule_new_from_widget (priv->window,
+ (ModestDimmingCallback) callback,
+ widget);
+
+ _add_rule (self, dim_rule, window);
+}
+