示例#1
0
文件: codecsbox.cpp 项目: GNOME/ekiga
GtkWidget *
codecs_box_new_with_type (GmApplication *app,
                          Ekiga::Call::StreamType type)
{
  CodecsBox *self = CODECS_BOX (g_object_new (CODECS_BOX_TYPE, NULL));

  Ekiga::ServiceCore& core = gm_application_get_core (app);

  self->priv = new _CodecsBoxPrivate ();
  self->priv->app = app;
  self->priv->call_core = core.get<Ekiga::CallCore> ("call-core");
  self->priv->type = type;
  self->priv->audio_settings = boost::shared_ptr<Ekiga::Settings> (new Ekiga::Settings (AUDIO_CODECS_SCHEMA));
  self->priv->video_settings = boost::shared_ptr<Ekiga::Settings> (new Ekiga::Settings (VIDEO_CODECS_SCHEMA));
  self->priv->codecs_list = gtk_tree_view_new ();

  codecs_box_build (self);

  codecs_box_set_codecs (self, self->priv->call_core->get_codecs ());

  return GTK_WIDGET (self);
}
示例#2
0
static void
settings_changed (G_GNUC_UNUSED GSettings *settings,
		  G_GNUC_UNUSED gchar *key,
		  gpointer data)
{
  std::list<std::string> list;
  CodecsBox *self = CODECS_BOX (data);

  g_return_if_fail (self);

  std::list<std::string> current_list = codecs_box_to_list (CODECS_BOX (self));

  if (self->priv->type == Ekiga::Call::Audio)
    list = self->priv->audio_settings->get_string_list ("media-list");
  else if (self->priv->type == Ekiga::Call::Video)
    list = self->priv->video_settings->get_string_list ("media-list");

  Ekiga::CodecList clist (list);
  Ekiga::CodecList curlist (current_list);

  if (clist != curlist)
    codecs_box_set_codecs (self, list);
}
示例#3
0
static void
codecs_box_set_property (GObject *obj,
                         guint prop_id,
                         const GValue *value,
                         GParamSpec *spec)
{
  CodecsBox *self = CODECS_BOX (obj);
  std::list<std::string> list;

  switch (prop_id) {

  case TYPE:
    self->priv->type = (Ekiga::Call::StreamType) g_value_get_int (value); 
    break;

  default:
    G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, spec);
    break;
  }

  if (self->priv->type == Ekiga::Call::Audio)
    list = self->priv->audio_settings->get_string_list ("media-list");
  else if (self->priv->type == Ekiga::Call::Video)
    list = self->priv->video_settings->get_string_list ("media-list");

  codecs_box_set_codecs (self, list);

  if (self->priv->type == Ekiga::Call::Audio)
    self->priv->handler =
      g_signal_connect (self->priv->audio_settings->get_g_settings (), "changed",
			G_CALLBACK (settings_changed), self);
  else
    self->priv->handler =
      g_signal_connect (self->priv->video_settings->get_g_settings (), "changed",
			G_CALLBACK (settings_changed), self);
}