Exemplo n.º 1
0
static bool
visit_presentities (HeapView* self,
		    Ekiga::PresentityPtr presentity)
{
  on_presentity_added (self, presentity);

  return true;
}
Exemplo n.º 2
0
static bool
visit_presentities (RosterViewGtk* self,
		    Ekiga::ClusterPtr cluster,
		    Ekiga::HeapPtr heap,
		    Ekiga::PresentityPtr presentity)
{
  on_presentity_added (self, cluster, heap, presentity);

  return true;
}
Exemplo n.º 3
0
static void
on_presentity_updated (RosterViewGtk* self,
		       Ekiga::ClusterPtr cluster,
		       Ekiga::HeapPtr heap,
		       Ekiga::PresentityPtr presentity)
{
  GtkTreeModel *model;
  GtkTreeIter heap_iter;
  GtkTreeIter group_iter;
  GtkTreeIter iter;
  gchar *group_name = NULL;
  int timeout = 0;
  std::set<std::string> groups = presentity->get_groups ();

  model = GTK_TREE_MODEL (self->priv->store);

  if (groups.empty ())
    groups.insert (_("Unsorted"));

  // This makes sure we are in all groups where we should
  on_presentity_added (self, cluster, heap, presentity);

  // Now let's remove from all the others
  roster_view_gtk_find_iter_for_heap (self, heap, &heap_iter);

  if (gtk_tree_model_iter_nth_child (model, &group_iter, &heap_iter, 0)) {

    do {

      gtk_tree_model_get (model, &group_iter,
                          COLUMN_GROUP_NAME, &group_name,
                          -1);
      if (group_name != NULL) {

        if (groups.find (group_name) == groups.end ()) {

          roster_view_gtk_find_iter_for_presentity (self, &group_iter, presentity, &iter);
          gtk_tree_model_get (GTK_TREE_MODEL (self->priv->store), &iter,
                              COLUMN_TIMEOUT, &timeout,
                              -1);
          if (timeout > 0)
            g_source_remove (timeout);
          gtk_tree_store_remove (self->priv->store, &iter);
        }
        g_free (group_name);
      }
    } while (gtk_tree_model_iter_next (model, &group_iter));
  }

  model = gtk_tree_view_get_model (self->priv->tree_view);
  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (model));

  roster_view_gtk_update_groups (self, &heap_iter);
}
Exemplo n.º 4
0
static void
on_presentity_updated (HeapView* self,
		       Ekiga::PresentityPtr presentity)
{
  // first, make sure we are in all the groups we should be in, with up to date information
  on_presentity_added (self, presentity);

  // now, let's remove ourselves from the others
  GtkTreeModel* model;
  GtkTreeIter group_iter;
  GtkTreeIter iter;
  gchar* group_name = NULL;
  std::set<std::string> groups = presentity->get_groups ();

  if (groups.empty ())
    groups.insert (_("Unsorted"));

  model = GTK_TREE_MODEL (self->priv->store);

  if (gtk_tree_model_get_iter_first (model, &group_iter)) {

    do {

      gtk_tree_model_get (model, &group_iter, COLUMN_NAME, &group_name, -1);

      if (group_name != NULL) {

	if (groups.find (group_name) == groups.end ()) {

	  find_iter_for_presentity (self, presentity.get (), &group_iter, &iter);
	  gtk_tree_store_remove (self->priv->store, &iter);
	}
	g_free (group_name);
      }

    } while (gtk_tree_model_iter_next (model, &group_iter));
  }

  clear_empty_groups (self);
}