X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-dimming-rule.c;h=778f06d6461a7578543aef65508f1fe0c6cc617b;hp=4b7f13bf3b47f583c93b6f61dfdf4bd21c099c7f;hb=aab537f6ce755830767baa7260d7879449ceeb38;hpb=92a227dadc4696578fa93e5af21b7a12528de924 diff --git a/src/modest-dimming-rule.c b/src/modest-dimming-rule.c index 4b7f13b..778f06d 100644 --- a/src/modest-dimming-rule.c +++ b/src/modest-dimming-rule.c @@ -35,6 +35,7 @@ static void modest_dimming_rule_finalize (GObject *obj); typedef struct _ModestDimmingRulePrivate ModestDimmingRulePrivate; struct _ModestDimmingRulePrivate { + ModestDimmingRulesGroup *group; ModestWindow *win; ModestDimmingCallback dimming_rule; gchar *action_path; @@ -90,6 +91,7 @@ modest_dimming_rule_init (ModestDimmingRule *obj) ModestDimmingRulePrivate *priv; priv = MODEST_DIMMING_RULE_GET_PRIVATE(obj); + priv->group= NULL; priv->win = NULL; priv->dimming_rule = NULL; priv->action_path = NULL; @@ -103,6 +105,8 @@ modest_dimming_rule_finalize (GObject *obj) priv = MODEST_DIMMING_RULE_GET_PRIVATE(obj); + if (priv->group != NULL) + g_object_unref(priv->group); if (priv->action_path != NULL) g_free(priv->action_path); if (priv->notification != NULL) @@ -153,8 +157,39 @@ modest_dimming_rule_process (ModestDimmingRule *self) /* Update dimming status */ action = modest_window_get_action (priv->win, priv->action_path); - g_return_if_fail (action != NULL); - gtk_action_set_sensitive (action, !dimmed); + if (action == NULL) + g_printerr ("modest: action path '%s' has not associatd action\n", priv->action_path); + else + gtk_action_set_sensitive (action, !dimmed); +} + +void +modest_dimming_rule_set_group (ModestDimmingRule *rule, + ModestDimmingRulesGroup *group) +{ + ModestDimmingRulePrivate *priv = NULL; + + g_return_if_fail (MODEST_IS_DIMMING_RULE (rule)); + g_return_if_fail (MODEST_IS_DIMMING_RULES_GROUP (group)); + priv = MODEST_DIMMING_RULE_GET_PRIVATE(rule); + + if (priv->group == group) + return; + if (priv->group != NULL) + g_object_unref (priv->group); + priv->group = g_object_ref (group); +} + +ModestDimmingRulesGroup * +modest_dimming_rule_get_group (ModestDimmingRule *rule) +{ + ModestDimmingRulePrivate *priv = NULL; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (rule), NULL); + priv = MODEST_DIMMING_RULE_GET_PRIVATE(rule); + g_return_val_if_fail (MODEST_IS_DIMMING_RULES_GROUP (priv->group), NULL); + + return g_object_ref(priv->group); } void @@ -167,11 +202,14 @@ modest_dimming_rule_set_notification (ModestDimmingRule *rule, priv = MODEST_DIMMING_RULE_GET_PRIVATE(rule); /* Free previous notification */ - if (priv->notification != NULL) + if (priv->notification != NULL) { g_free(priv->notification); + priv->notification = NULL; + } /* Set new notification message */ - priv->notification = g_strdup(notification); + if (notification != NULL) + priv->notification = g_strdup(notification); } gchar *