From 476aee43a82247a1fcc4f81740c69ce0336af414 Mon Sep 17 00:00:00 2001
From: Andrea Zagli <azagli@libero.it>
Date: Sun, 5 Sep 2010 12:47:18 +0200
Subject: [PATCH] Enabled group editing.

---
 data/libaute-smbldap/gui/autesmbldap.gui |  6 +-
 src/aute_smbldap.c                       | 76 ++++++++++++++++++++----
 src/group.c                              | 26 ++++----
 3 files changed, 78 insertions(+), 30 deletions(-)

diff --git a/data/libaute-smbldap/gui/autesmbldap.gui b/data/libaute-smbldap/gui/autesmbldap.gui
index e510878..d003278 100644
--- a/data/libaute-smbldap/gui/autesmbldap.gui
+++ b/data/libaute-smbldap/gui/autesmbldap.gui
@@ -460,7 +460,7 @@
               <object class="GtkLabel" id="label6">
                 <property name="visible">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">Code</property>
+                <property name="label" translatable="yes">CN</property>
               </object>
               <packing>
                 <property name="x_options">GTK_FILL</property>
@@ -552,7 +552,6 @@
               <object class="GtkEntry" id="entry1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="max_length">10</property>
                 <property name="invisible_char">&#x25CF;</property>
               </object>
               <packing>
@@ -565,7 +564,6 @@
               <object class="GtkEntry" id="entry2">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="max_length">100</property>
                 <property name="invisible_char">&#x25CF;</property>
               </object>
               <packing>
@@ -580,7 +578,6 @@
               <object class="GtkEntry" id="entry3">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="max_length">100</property>
                 <property name="invisible_char">&#x25CF;</property>
               </object>
               <packing>
@@ -722,7 +719,6 @@
               <object class="GtkEntry" id="entry5">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="max_length">10</property>
                 <property name="invisible_char">&#x25CF;</property>
               </object>
               <packing>
diff --git a/src/aute_smbldap.c b/src/aute_smbldap.c
index 29b887a..5429cb1 100644
--- a/src/aute_smbldap.c
+++ b/src/aute_smbldap.c
@@ -636,23 +636,75 @@ autesmbldap_on_group_aggiornato (gpointer instance, gpointer user_data)
 static void
 autesmbldap_edit_user ()
 {
-	/*GtkTreeIter iter;
-	gchar *code;
+	GtkTreeIter iter;
+	gchar *cn;
+
+	GtkListStore *lstore;
+	GtkTreeSelection *selection;
+	gchar *str_type;
+	guint col_cn;
 
-	if (gtk_tree_selection_get_selected (sel_users, NULL, &iter))
+	GtkWidget *w;
+	GtkWidget *dialog;
+
+	if (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)) == 0)
+		{
+			lstore = lstore_users;
+			selection = sel_users;
+			str_type = g_strdup ("user");
+			col_cn = COL_USERS_CN;
+		}
+	else if (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)) == 1)
+		{
+			lstore = lstore_groups;
+			selection = sel_groups;
+			str_type = g_strdup ("group");
+			col_cn = COL_GROUPS_CN;
+		}
+	else
 		{
-			GtkWidget *w;
+			dialog = gtk_message_dialog_new (autesmbldap_get_gtkwidget_parent_gtkwindow (w_users),
+											 GTK_DIALOG_DESTROY_WITH_PARENT,
+											 GTK_MESSAGE_WARNING,
+											 GTK_BUTTONS_OK,
+											 "Wrong notebook page.");
+			return;
+		}
 
-			gtk_tree_model_get (GTK_TREE_MODEL (lstore_users), &iter,
-			                    COL_CODE, &code,
+	if (gtk_tree_selection_get_selected (selection, NULL, &iter))
+		{
+			gtk_tree_model_get (GTK_TREE_MODEL (lstore), &iter,
+			                    col_cn, &cn,
 								-1);
 
-			User *u = user_new (gtkbuilder, gdaex, guifile, formdir, code);
+			if (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)) == 0)
+				{
+					/*User *u = user_new (gtkbuilder, gdaex, guifile, formdir, NULL);
 
-			g_signal_connect (G_OBJECT (u), "aggiornato",
-			                  G_CALLBACK (autesmbldap_on_user_aggiornato), NULL);
+					g_signal_connect (G_OBJECT (u), "aggiornato",
+									  G_CALLBACK (autesmbldap_on_user_aggiornato), NULL);
+
+					w = user_get_widget (u);*/
+				}
+			else if (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)) == 1)
+				{
+					Group *u = group_new (gtkbuilder, guifile, ldap, cn, groups_ou, base_dn);
+
+					g_signal_connect (G_OBJECT (u), "aggiornato",
+									  G_CALLBACK (autesmbldap_on_group_aggiornato), NULL);
+
+					w = group_get_widget (u);
+				}
+			else
+				{
+					dialog = gtk_message_dialog_new (autesmbldap_get_gtkwidget_parent_gtkwindow (w_users),
+													 GTK_DIALOG_DESTROY_WITH_PARENT,
+													 GTK_MESSAGE_WARNING,
+													 GTK_BUTTONS_OK,
+													 "Wrong notebook page.");
+					return;
+				}
 
-			w = user_get_widget (u);
 			gtk_window_set_transient_for (GTK_WINDOW (w), autesmbldap_get_gtkwidget_parent_gtkwindow (w_users));
 			gtk_widget_show (w);
 		}
@@ -662,10 +714,10 @@ autesmbldap_edit_user ()
 											 GTK_DIALOG_DESTROY_WITH_PARENT,
 											 GTK_MESSAGE_WARNING,
 											 GTK_BUTTONS_OK,
-											 "Occorre prima selezionare un modello");
+											 "You must select a %s before.", str_type);
 			gtk_dialog_run (GTK_DIALOG (dialog));
 			gtk_widget_destroy (dialog);
-		}*/
+		}
 }
 
 static void
diff --git a/src/group.c b/src/group.c
index 7893322..b7b5757 100644
--- a/src/group.c
+++ b/src/group.c
@@ -243,21 +243,21 @@ group_salva (Group *group)
 
 	GroupPrivate *priv = GROUP_GET_PRIVATE (group);
 
+	if (g_strcmp0 (priv->cn, "") == 0)
+		{
+			autesmbldap_exec_ssh_command (g_strdup_printf ("sudo /usr/sbin/smbldap-groupadd -a \"%s\"",
+					          gtk_entry_get_text (GTK_ENTRY (priv->txt_cn))));
+			priv->cn = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->txt_cn)));
+			group_carica (group);
+		}
+	else
+		{
+			autesmbldap_exec_ssh_command (g_strdup_printf ("sudo /usr/sbin/smbldap-groupmod -n \"%s\" \"%s\"",
+					          gtk_entry_get_text (GTK_ENTRY (priv->txt_cn)), priv->cn));
+		}
+
 	/*if (gdaex_execute (priv->gdaex, sql) == 1)
 		{*/
-			if (g_strcmp0 (priv->cn, "") == 0)
-				{
-					autesmbldap_exec_ssh_command (g_strdup_printf ("sudo /usr/sbin/smbldap-groupadd -a %s",
-							          gtk_entry_get_text (GTK_ENTRY (priv->txt_cn))));
-					priv->cn = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->txt_cn)));
-					group_carica (group);
-				}
-			else
-				{
-					/* TODO */
-					return;
-				}
-
 			g_signal_emit (group, klass->aggiornato_signal_id, 0);
 
 			dialog = gtk_message_dialog_new (GTK_WINDOW (priv->w),
-- 
2.49.0