static void
set_property (GObject *object,
    guint param_id,
    const GValue *value,
    GParamSpec *pspec)
{
  EmpathyPersonaStore *self = EMPATHY_PERSONA_STORE (object);

  switch (param_id)
    {
      case PROP_INDIVIDUAL:
        empathy_persona_store_set_individual (self, g_value_get_object (value));
        break;
      case PROP_SHOW_AVATARS:
        empathy_persona_store_set_show_avatars (self,
            g_value_get_boolean (value));
        break;
      case PROP_SHOW_PROTOCOLS:
        empathy_persona_store_set_show_protocols (self,
            g_value_get_boolean (value));
        break;
      case PROP_SORT_CRITERION:
        empathy_persona_store_set_sort_criterion (self,
            g_value_get_enum (value));
        break;
      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
        break;
    }
}
/**
 * empathy_individual_linker_set_start_individual:
 * @self: an #EmpathyIndividualLinker
 * @individual: (allow-none): the start individual, or %NULL
 *
 * Set the value of #EmpathyIndividualLinker:start-individual to @individual.
 */
void
empathy_individual_linker_set_start_individual (EmpathyIndividualLinker *self,
    FolksIndividual *individual)
{
  EmpathyIndividualLinkerPriv *priv;

  g_return_if_fail (EMPATHY_IS_INDIVIDUAL_LINKER (self));
  g_return_if_fail (individual == NULL || FOLKS_IS_INDIVIDUAL (individual));

  priv = GET_PRIV (self);

  tp_clear_object (&priv->start_individual);
  tp_clear_object (&priv->new_individual);
  g_hash_table_remove_all (priv->changed_individuals);

  if (individual != NULL)
    {
      priv->start_individual = g_object_ref (individual);
      priv->new_individual = folks_individual_new (
          folks_individual_get_personas (individual));
      empathy_individual_view_set_store (priv->individual_view,
          priv->individual_store);
    }
  else
    {
      priv->start_individual = NULL;
      priv->new_individual = NULL;

      /* We only display Individuals in the individual view if we have a
       * new_individual to link them into */
      empathy_individual_view_set_store (priv->individual_view, NULL);
    }

  empathy_individual_widget_set_individual (
      EMPATHY_INDIVIDUAL_WIDGET (priv->preview_widget), priv->new_individual);
  empathy_persona_store_set_individual (priv->persona_store,
      priv->new_individual);

  g_object_freeze_notify (G_OBJECT (self));
  g_object_notify (G_OBJECT (self), "start-individual");
  g_object_notify (G_OBJECT (self), "has-changed");
  g_object_thaw_notify (G_OBJECT (self));
}
static void
dispose (GObject *object)
{
  EmpathyPersonaStorePriv *priv = GET_PRIV (object);

  empathy_persona_store_set_individual (EMPATHY_PERSONA_STORE (object), NULL);

  if (priv->inhibit_active != 0)
    {
      g_source_remove (priv->inhibit_active);
      priv->inhibit_active = 0;
    }

  if (priv->setup_idle_id != 0)
    {
      g_source_remove (priv->setup_idle_id);
      priv->setup_idle_id = 0;
    }

  G_OBJECT_CLASS (empathy_persona_store_parent_class)->dispose (object);
}