/* Copyright (C) 2000,2001,2002 Manuel Amador (Rudd-O)
   This file is part of Directory administrator.

   Directory administrator is free software; you can redistribute it 
   and/or modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version 2.1 of
   the License, or (at your option) any later version.

   Directory administrator is distributed in the hope that it will be 
   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License along
   with Directory administrator; if not, send e-mail to amador@alomega.com 
*/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include "appsupport.h"
#include "appglobals.h"
#include "profile.h"
#include "appfunctions.h"
#include "prefsdialog.h"

void
list_profiles_fill (GtkWidget * widget)
{

  GList *loopix = g_list_first (connection_profile_list);
  gchar *fila[1];

  g_assert (widget);
  gtk_clist_clear ((GtkCList *) widget);

  while (loopix)
    {
      fila[0] =
	connection_profile_get_name ((connection_profile *) loopix->data);
      gtk_clist_append ((GtkCList *) widget, fila);

      loopix = g_list_next (loopix);
    }

  app_reference = widget;
}


gboolean
on_button4_clicked_handler (GtkButton * button, GtkWidget * list_reference)
{
  connection_profile *newone;
  gchar *nombrecitocojudo;


  nombrecitocojudo =
    gtk_entry_get_text ((GtkEntry *)
			lookup_widget ((GtkWidget *) button,
				       "entry_profile_name"));
  if (strlen (nombrecitocojudo) == 0)
    {
      gtk_widget_show (create_messagebox_with_message
		       ("You need to supply a profile name"));
      return (FALSE);
    }

  nombrecitocojudo =
    gtk_entry_get_text ((GtkEntry *)
			lookup_widget ((GtkWidget *) button,
				       "entry_login_server"));
  if (strlen (nombrecitocojudo) == 0)
    {
      gtk_widget_show (create_messagebox_with_message
		       ("You need to supply a server address"));
      return (FALSE);
    }

  nombrecitocojudo =
    gtk_entry_get_text ((GtkEntry *)
			lookup_widget ((GtkWidget *) button,
				       "entry_profile_name"));
  if (connection_profile_list_getbyname
      (connection_profile_list, nombrecitocojudo) != NULL)
    {
//    g_print("\nItem was found on the list.  Not admissible.");
      gtk_widget_show (create_messagebox_with_message
		       ("An entry with this name already exists"));
      return (FALSE);
    }


  newone =
    connection_profile_new (gtk_entry_get_text
			    ((GtkEntry *)
			     lookup_widget ((GtkWidget *) button,
					    "entry_profile_name")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_dn")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_pw")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_server")),
                            gtk_toggle_button_get_active ((GtkToggleButton *)
                                                lookup_widget ((GtkWidget *)
                                                               button,
                                                               "entry_login_tls")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_treeroot")));
  connection_profile_list =
    connection_profile_list_add (connection_profile_list, newone);
  if (list_reference)
    list_profiles_fill (list_reference);
  return (TRUE);

}

void
on_login_modify_finish (GtkButton * button, GtkCList * list_reference)
{
  connection_profile *newone = NULL;
  connection_profile *oldone = NULL;
  gchar *nombrecitocojudo = NULL;


  //gets the text from the list reference, first row selected, column 0, and puts it into nombrecitocojudo
  gtk_clist_get_text (list_reference,
		      GPOINTER_TO_INT (list_reference->selection->data), 0,
		      &nombrecitocojudo);

  oldone =
    connection_profile_list_getbyname (connection_profile_list,
				       nombrecitocojudo);
  g_assert (oldone);

  nombrecitocojudo =
    gtk_entry_get_text ((GtkEntry *)
			lookup_widget ((GtkWidget *) button,
				       "entry_profile_name"));
  if (strlen (nombrecitocojudo) == 0)
    {
      gtk_widget_show (create_messagebox_with_message
		       ("You need to supply a profile name"));
      return;
    }

  nombrecitocojudo =
    gtk_entry_get_text ((GtkEntry *)
			lookup_widget ((GtkWidget *) button,
				       "entry_login_server"));
  if (strlen (nombrecitocojudo) == 0)
    {
      gtk_widget_show (create_messagebox_with_message
		       ("You need to supply a server address"));
      return;
    }

  nombrecitocojudo =
    gtk_entry_get_text ((GtkEntry *)
			lookup_widget ((GtkWidget *) button,
				       "entry_profile_name"));

  newone =
    connection_profile_new (gtk_entry_get_text
			    ((GtkEntry *)
			     lookup_widget ((GtkWidget *) button,
					    "entry_profile_name")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_dn")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_pw")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_server")),
                            gtk_toggle_button_get_active ((GtkToggleButton *)
                                                lookup_widget ((GtkWidget *)
                                                               button,
                                                               "entry_login_tls")),
			    gtk_entry_get_text ((GtkEntry *)
						lookup_widget ((GtkWidget *)
							       button,
							       "entry_login_treeroot")));

  connection_profile_list =
    connection_profile_list_remove (connection_profile_list, oldone);
  connection_profile_list =
    connection_profile_list_add (connection_profile_list, newone);
  g_assert (list_reference);
  list_profiles_fill (GTK_WIDGET (list_reference));
  gtk_widget_destroy (lookup_widget (GTK_WIDGET (button), "login"));

}



void
fill_loginshells_list (GtkWidget * widget)
{


  GList *loopix = g_list_first (preferences.logindefaults.shells);
  gchar *fila[1];

  g_print ("\ncalled: fill_loginshells_list\n");

  g_assert (widget);
  gtk_clist_clear ((GtkCList *) widget);

  while (loopix)
    {
      fila[0] = loopix->data;
      gtk_clist_append ((GtkCList *) widget, fila);
      loopix = g_list_next (loopix);
    }

}


void
fill_login (GtkWidget * about, char *profilename)
{

  connection_profile *conprof = NULL;

  conprof =
    connection_profile_list_getbyname (connection_profile_list, profilename);
  if (conprof == NULL)
    {
      g_print
	("***ERROR! no such profile! could not get data about selected profile");
      return;
    }

  g_print
    ("\n\nNow a dialog box with the profile information should pop up\n");

  gtk_entry_set_text (GTK_ENTRY (lookup_widget (about, "entry_profile_name")),
		      connection_profile_get_name (conprof));

  gtk_entry_set_text (GTK_ENTRY (lookup_widget (about, "entry_login_dn")),
		      connection_profile_get_dn (conprof));

  gtk_entry_set_text (GTK_ENTRY (lookup_widget (about, "entry_login_pw")),
		      connection_profile_get_password (conprof));

  gtk_entry_set_text (GTK_ENTRY (lookup_widget (about, "entry_login_server")),
		      connection_profile_get_server (conprof));

#ifdef HAVE_TLS
  if (conprof->tls)
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (about, "entry_login_tls")),
		      TRUE);
  else
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (about, "entry_login_tls")),
		      FALSE);
#else
  gtk_widget_set_sensitive( (lookup_widget (about, "entry_login_tls")), FALSE );
#endif

  gtk_entry_set_text (GTK_ENTRY
		      (lookup_widget (about, "entry_login_treeroot")),
		      connection_profile_get_treeroot (conprof));

}

void fill_prefsdialog (GtkWidget* widget) {

	if (preferences.avoidconflicts) {
		gtk_toggle_button_set_active((GtkToggleButton*) lookup_widget(widget,"avoidconflicts"),TRUE);
	} else {
		gtk_toggle_button_set_active((GtkToggleButton*) lookup_widget(widget,"avoidconflicts"),FALSE);
	}

	if (preferences.avoidconflictscope == ORGUNIT) {
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget(widget,"sameorgunit")), TRUE);
	} else {
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget(widget,"entiredirectory")), TRUE);
	}

}



syntax highlighted by Code2HTML, v. 0.9.1