Example #1
0
// 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);
}