Example #1
0
static void
status_menu_finalize (GObject *obj)
{
  delete STATUS_MENU (obj)->priv;

  parent_class->finalize (obj);
}
Example #2
0
static void
status_menu_dispose (GObject *obj)
{
    StatusMenu *self = NULL;

    self = STATUS_MENU (obj);
    delete self->priv;

    self->priv = NULL;

    // NULLify everything
    parent_class->dispose (obj);
}
Example #3
0
static void
ekiga_window_init_status_toolbar (EkigaWindow *mw)
{
  g_return_if_fail (EKIGA_IS_WINDOW (mw));

  /* The main horizontal toolbar */
  mw->priv->status_toolbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
  mw->priv->status_option_menu = status_menu_new (gm_application_get_core (mw->priv->app));
  status_menu_set_parent_window (STATUS_MENU (mw->priv->status_option_menu),
                                 GTK_WINDOW (mw));
  gtk_box_pack_start (GTK_BOX (mw->priv->status_toolbar),
                      mw->priv->status_option_menu, TRUE, TRUE, 0);
  gtk_widget_set_margin_start (mw->priv->status_option_menu, 0);
  gtk_widget_set_margin_end (mw->priv->status_option_menu, 0);

  gtk_widget_show_all (mw->priv->status_toolbar);
}
Example #4
0
static void
status_menu_custom_messages_changed (gpointer /*id*/,
                                     GmConfEntry *entry,
                                     gpointer self)
{
    std::string key = gm_conf_entry_get_key (entry);
    GSList *current = gm_conf_entry_get_list (entry);
    GSList *custom_status_array [NUM_STATUS_TYPES];

    for (int i = 0 ; i < NUM_STATUS_TYPES ; i++) {
        if (key == status_types_keys [i])
            custom_status_array [i] = current;
        else
            custom_status_array [i] = gm_conf_get_string_list (status_types_keys [i]);
    }

    status_menu_populate (STATUS_MENU (self), custom_status_array);

    for (int i = 0 ; i < NUM_STATUS_TYPES ; i++) {
        g_slist_foreach (custom_status_array [i], (GFunc) g_free, NULL);
        g_slist_free (custom_status_array [i]);
    }
}
Example #5
0
static void
status_menu_custom_messages_changed (G_GNUC_UNUSED GSettings *settings,
                                     gchar *_key,
                                     StatusMenu *self)
{
  std::string key = _key;
  GSList *current = self->priv->personal_data_settings->get_slist (_key);
  GSList *custom_status_array [NUM_STATUS_TYPES];

  for (int i = 0 ; i < NUM_STATUS_TYPES ; i++) {
    if (key == status_types_keys [i])
      custom_status_array [i] = current;
    else
      custom_status_array [i] =
        self->priv->personal_data_settings->get_slist (status_types_keys [i]);
  }

  status_menu_populate (STATUS_MENU (self), custom_status_array);

  for (int i = 0 ; i < NUM_STATUS_TYPES ; i++) {
    g_slist_foreach (custom_status_array [i], (GFunc) g_free, NULL);
    g_slist_free (custom_status_array [i]);
  }
}
Example #6
0
static void
status_menu_option_changed (GtkComboBox *box,
                            gpointer data)
{
  GtkTreeIter iter;

  int i = 0;
  gchar* status = NULL;

  GtkTreeModel* model = NULL;
  StatusMenu* self = STATUS_MENU (data);

  g_return_if_fail (self != NULL);

  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (box), &iter)) {

    model = gtk_combo_box_get_model (GTK_COMBO_BOX (box));
    gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, COL_MESSAGE_TYPE, &i,
                        COL_MESSAGE, &status, -1);

    switch (i)
      {
      case TYPE_AVAILABLE:
        self->priv->personal_details->set_presence_info ("available", "");
        break;

      case TYPE_AWAY:
        self->priv->personal_details->set_presence_info ("away", "");
        break;

      case TYPE_BUSY:
        self->priv->personal_details->set_presence_info ("busy", "");
        break;

      case TYPE_CUSTOM_AVAILABLE:
        self->priv->personal_details->set_presence_info ("available", status);
        break;

      case TYPE_CUSTOM_AWAY:
        self->priv->personal_details->set_presence_info ("away", status);
        break;

      case TYPE_CUSTOM_BUSY:
        self->priv->personal_details->set_presence_info ("busy", status);
        break;

      case TYPE_CUSTOM_AVAILABLE_NEW:
        status_menu_new_status_message_dialog_run (self, TYPE_CUSTOM_AVAILABLE);
        break;

      case TYPE_CUSTOM_AWAY_NEW:
        status_menu_new_status_message_dialog_run (self, TYPE_CUSTOM_AWAY);
        break;

      case TYPE_CUSTOM_BUSY_NEW:
        status_menu_new_status_message_dialog_run (self, TYPE_CUSTOM_BUSY);
        break;

      case TYPE_CLEAR:
        status_menu_clear_status_message_dialog_run (self);
        break;

      default:
        break;
      }

    g_free (status);
  }
}