diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 97d51a9..091a62a 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -36,6 +36,7 @@ void on_filechooser_open(GtkWidget *self, GtkEntry *output_target){ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); gtk_entry_set_text(output_target,filename); } + on_subwindow_close(dialog); // ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new(); // g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); @@ -400,6 +401,159 @@ void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets){ +void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window *window){ + if (!strcmp(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)),SET_LABEL)){ + if(gtk_combo_box_get_active(GTK_COMBO_BOX(window->userShellCombo))>1){ + gtk_widget_set_sensitive(window->userShellEntry,1); + } else { + gtk_widget_set_sensitive(window->userShellEntry,0); + } + } else { + gtk_widget_set_sensitive(window->userShellEntry,0); + } +} + +void on_user_save(GtkWidget *self, ubl_settings_usergroups_user_window *window){ + char *final_user=""; + char *uid_string = NULL; + char *password = NULL; + char *login = NULL; + char *username = NULL; + char *main_group = NULL; + char *additional_groups = NULL; + char *password_changed_date = NULL; + char *password_expiration_date = NULL; + char *password_change_interval_minimum = NULL; + char *password_change_interval_maximum = NULL; + char *warning_days = NULL; + char *no_activity_days = NULL; + char *force_at_next_login = NULL; + char *user_shell = NULL; + char *user_home = NULL; + char *create_system_user = NULL; + char *create_ununique = NULL; + char *do_not_check = NULL; + char *samba_sync = NULL; + char *deactivate = NULL; + char *extra_options = NULL; + + int uid_auto_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck)); + if (uid_auto_active){ + uid_string="x"; + } else { + uid_string = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUIDEntry)); + if (yon_char_is_empty(uid_string)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userUIDEntry); + return; + } + } + + login = (char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry)); + if (yon_char_is_empty(login)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userLoginEntry); + return; + } + + password = (char*)gtk_entry_get_text(GTK_ENTRY(window->userPasswordEntry)); + if (yon_char_is_empty(password)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userPasswordEntry); + return; + } + + username = (char*)gtk_entry_get_text(GTK_ENTRY(window->userUserNameEntry)); + if (yon_char_is_empty(username)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userUserNameEntry); + return; + } + + main_group = (char*)gtk_entry_get_text(GTK_ENTRY(window->userGroupsEntry)); + if (yon_char_is_empty(main_group)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userGroupsEntry); + return; + } + + additional_groups = (char*)gtk_entry_get_text(GTK_ENTRY(window->userAdditionalGroupsEntry)); + if (yon_char_is_empty(additional_groups)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userAdditionalGroupsEntry); + return; + } + + password_change_interval_minimum = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMinimumSpin))); + if (yon_char_is_empty(password_change_interval_minimum)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userPasswordChangeDelayMinimumSpin); + return; + } + + password_change_interval_maximum = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userPasswordChangeDelayMaximumSpin))); + if (yon_char_is_empty(password_change_interval_maximum)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userPasswordChangeDelayMaximumSpin); + return; + } + + warning_days = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userWarningSpin))); + if (yon_char_is_empty(warning_days)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userWarningSpin); + return; + } + + no_activity_days = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->userActivitySpin))); + if (yon_char_is_empty(no_activity_days)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userActivitySpin); + return; + } + + int force_at_next_login_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userForceChangeCheck)); + if (force_at_next_login_active){ + + } + + user_shell = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userShellCombo)); + if (!strcmp(user_shell,SET_LABEL)){ + user_shell = (char*)gtk_entry_get_text(GTK_ENTRY(window->userShellCombo)); + if (yon_char_is_empty(user_shell)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userShellEntry); + return; + } + } + + int user_home_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->userHomeCombo)); + if (user_home_active==2){ + user_home=(char*)gtk_entry_get_text(GTK_ENTRY(window->userHomeEntry)); + if (yon_char_is_empty(user_home)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->userHomeCombo); + return; + } + } + + int system_user_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck)); + if (system_user_active); + + int create_ununique_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck)); + if (create_ununique_active); + + int do_not_check_actve = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDontCheckCheck)); + if (do_not_check); + + int samba_sync_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userSyncSAMBACheck)); + if (samba_sync_active); + + int deactivate_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userDeactivatedCheck)); + if (deactivate_active); + + extra_options=(char*)gtk_entry_get_text(GTK_ENTRY(window->userExtraOptionsEntry)); +} ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window)); @@ -451,6 +605,8 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeEntry); g_signal_connect(G_OBJECT(window->userHomeCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userHomeButton); g_signal_connect(G_OBJECT(window->userPasswordCombo),"changed",G_CALLBACK(on_password_combo_changed),window->userPasswordButton); + g_signal_connect(G_OBJECT(window->userGroupsCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userGroupsEntry); + g_signal_connect(G_OBJECT(window->userShellCombo),"changed",G_CALLBACK(on_user_shell_changed),window); return window; } diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 3b9ef8c..684a255 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -86,4 +86,8 @@ #define GROUP_LABEL _("Group") #define PASSWORD_MISMATCH_LABEL _("Password mismatch") -#define GROUP_LABEL _("Group") \ No newline at end of file +#define GROUP_LABEL _("Group") + +//ubl-settings-usergroups-user.glade +#define SET_LABEL _("Set") +#define EMPTY_IMPORTANT_LABEL _("Empty important field") \ No newline at end of file diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade index 217655b..935fe26 100644 --- a/ubl-settings-usergroups-user.glade +++ b/ubl-settings-usergroups-user.glade @@ -141,6 +141,7 @@ True True + 5 1001 number