static void status_menu_finalize (GObject *obj) { delete STATUS_MENU (obj)->priv; parent_class->finalize (obj); }
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); }
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); }
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]); } }
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]); } }
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); } }