// create a map from user ids to sequential ids, starting with 1 void Netflix::get_seq_user_id_map(map<int, int>& user_id_map) { user_id_map.clear(); vector<int> user_list; get_user_list(user_list); int user_list_size = user_list.size(); for (int i = 0; i < user_list_size; ++i) user_id_map.insert(pair<int, int>(user_list[i], i + 1)); }
void exchange_delegates (ExchangeAccount *account, GtkWidget *parent) { GtkWidget *dialog_vbox1; GtkWidget *vbox2; GtkWidget *label3; GtkWidget *delegate_hbox; GtkWidget *delegates_table; GtkWidget *vbuttonbox1; GtkWidget *add_button; GtkWidget *edit_button; GtkWidget *remove_button; ExchangeDelegates *delegates; ExchangeDelegatesUser *user; GtkTreeViewColumn *column; GtkTreeIter iter; gint i; g_return_if_fail (GTK_IS_WIDGET (parent)); g_return_if_fail (EXCHANGE_IS_ACCOUNT (account)); delegates = g_new0 (ExchangeDelegates, 1); delegates->account = g_object_ref (account); delegates->dialog = gtk_dialog_new_with_buttons ( _("Delegates"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); dialog_vbox1 = gtk_dialog_get_content_area (GTK_DIALOG (delegates->dialog)); gtk_widget_show (dialog_vbox1); vbox2 = gtk_vbox_new (FALSE, 6); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox2, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox2), 6); label3 = gtk_label_new (_("These users will be able to send mail on your behalf\nand access your folders with the permissions you give them.")); gtk_widget_show (label3); gtk_box_pack_start (GTK_BOX (vbox2), label3, FALSE, FALSE, 0); delegate_hbox = gtk_hbox_new (FALSE, 6); gtk_widget_show (delegate_hbox); gtk_box_pack_start (GTK_BOX (vbox2), delegate_hbox, TRUE, TRUE, 0); delegates_table = gtk_tree_view_new (); gtk_widget_show (delegates_table); gtk_box_pack_start (GTK_BOX (delegate_hbox), delegates_table, TRUE, TRUE, 0); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (delegates_table), FALSE); vbuttonbox1 = gtk_vbutton_box_new (); gtk_widget_show (vbuttonbox1); gtk_box_pack_end (GTK_BOX (delegate_hbox), vbuttonbox1, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (vbuttonbox1), GTK_BUTTONBOX_START); gtk_box_set_spacing (GTK_BOX (vbuttonbox1), 6); add_button = gtk_button_new_from_stock ("gtk-add"); gtk_widget_show (add_button); gtk_container_add (GTK_CONTAINER (vbuttonbox1), add_button); gtk_widget_set_can_default (add_button, TRUE); edit_button = gtk_button_new_with_mnemonic (_("_Edit")); gtk_widget_show (edit_button); gtk_container_add (GTK_CONTAINER (vbuttonbox1), edit_button); gtk_widget_set_can_default (edit_button, TRUE); remove_button = gtk_button_new_from_stock ("gtk-remove"); gtk_widget_show (remove_button); gtk_container_add (GTK_CONTAINER (vbuttonbox1), remove_button); gtk_widget_set_can_default (remove_button, TRUE); g_signal_connect (delegates->dialog, "response", G_CALLBACK (dialog_response), delegates); if (parent) gtk_window_set_transient_for (GTK_WINDOW (delegates->dialog), GTK_WINDOW (parent)); delegates->parent = parent; g_object_weak_ref (G_OBJECT (parent), parent_destroyed, delegates); /* Set up the buttons */ g_signal_connect (add_button, "clicked", G_CALLBACK (add_button_clicked_cb), delegates); g_signal_connect (edit_button, "clicked", G_CALLBACK (edit_button_clicked_cb), delegates); g_signal_connect (remove_button, "clicked", G_CALLBACK (remove_button_clicked_cb), delegates); /* Set up the table */ delegates->model = gtk_list_store_new (1, G_TYPE_STRING); delegates->table = delegates_table; column = gtk_tree_view_column_new_with_attributes ( _("Name"), gtk_cell_renderer_text_new (), "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (delegates->table), column); gtk_tree_view_set_model (GTK_TREE_VIEW (delegates->table), GTK_TREE_MODEL (delegates->model)); /* Get list of delegate users */ if (get_user_list (delegates)) { for (i = 0; i < delegates->users->len; i++) { user = delegates->users->pdata[i]; gtk_list_store_append (delegates->model, &iter); gtk_list_store_set (delegates->model, &iter, 0, user->display_name, -1); } g_signal_connect (delegates->table, "button_press_event", G_CALLBACK (table_click_cb), delegates); } else { gtk_widget_set_sensitive (add_button, FALSE); gtk_widget_set_sensitive (edit_button, FALSE); gtk_widget_set_sensitive (remove_button, FALSE); gtk_list_store_append (delegates->model, &iter); gtk_list_store_set (delegates->model, &iter, 0, _("Error reading delegates list."), -1); } gtk_widget_show (delegates->dialog); }