@ -68,7 +68,11 @@ int yon_user_save(yon_user_struct *user){
return 0 ;
}
}
char * parameter = yon_char_unite ( yon_char_return_if_exist ( name , " " ) , " ::::: " , yon_char_return_if_exist ( password , " " ) , NULL ) ;
char * admin_uid = NULL ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( user - > AdminCheck ) ) ) {
admin_uid = yon_config_get ( admuid_parameter ) ;
}
char * parameter = yon_char_unite ( yon_char_return_if_exist ( name , " " ) , " : " , yon_char_return_if_exist ( admin_uid , " " ) , " :::: " , yon_char_return_if_exist ( password , " " ) , NULL ) ;
yon_config_register ( USERADD_parameter ( login ) , USERADD_parameter_command ( login ) , parameter ) ;
free ( parameter ) ;
return 1 ;
@ -76,6 +80,7 @@ int yon_user_save(yon_user_struct *user){
void on_user_add ( GtkWidget * , main_window * widgets ) {
yon_user_struct * user = yon_user_struct_new ( ) ;
g_signal_connect ( G_OBJECT ( user - > AdminCheck ) , " clicked " , G_CALLBACK ( yon_user_admin_check ) , widgets ) ;
g_object_set_data ( G_OBJECT ( user - > MainBox ) , " widgets " , widgets ) ;
gtk_box_pack_start ( GTK_BOX ( widgets - > UserAddBox ) , user - > MainBox , 0 , 0 , 0 ) ;
}
@ -97,16 +102,16 @@ void yon_password_new(GtkWidget *, yon_user_struct *user){
yon_password_hash_list_set ( window , NULL , NULL , 0 ) ;
}
void yon_user_admin_check ( GtkWidget * , yon_user_struct * user ) {
main_window * widgets = g_object_get_data ( G_OBJECT ( user - > MainBox ) , " widgets " ) ;
void yon_user_admin_check ( GtkWidget * self , main_window * widgets ) {
yon_user_struct * user = g_object_get_data ( G_OBJECT ( self ) , " yon_user_struct " ) ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > UserAddBox ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
if ( iter - > data ! = user - > MainBox ) {
yon_user_struct * cur_user = g_object_get_data ( G_OBJECT ( iter - > data ) , " yon_user_struct " ) ;
g_signal_handlers_block_by_func ( G_OBJECT ( cur_user - > AdminCheck ) , G_CALLBACK ( yon_user_admin_check ) , cur_user ) ;
g_signal_handlers_block_by_func ( G_OBJECT ( cur_user - > AdminCheck ) , G_CALLBACK ( yon_user_admin_check ) , widgets ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( cur_user - > AdminCheck ) , 0 ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( cur_user - > AdminCheck ) , G_CALLBACK ( yon_user_admin_check ) , cur_user ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( cur_user - > AdminCheck ) , G_CALLBACK ( yon_user_admin_check ) , widgets ) ;
}
}
}
@ -127,13 +132,13 @@ yon_user_struct *yon_user_struct_new(){
yon_gtk_entry_block_symbols ( GTK_ENTRY ( user - > UsernameEntry ) , " []' \" : \n " ) ;
g_object_set_data ( G_OBJECT ( user - > MainBox ) , " yon_user_struct " , user ) ;
g_object_set_data ( G_OBJECT ( user - > AdminCheck ) , " yon_user_struct " , user ) ;
yon_gtk_entry_set_password_visibility_icon ( GTK_ENTRY ( user - > PasswordEntry ) ) ;
g_signal_connect ( G_OBJECT ( user - > PasswordCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_combo_box ) , user - > PasswordEntry ) ;
g_signal_connect ( G_OBJECT ( user - > PasswordCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_combo_box ) , user - > PasswordButton ) ;
g_signal_connect ( G_OBJECT ( user - > PasswordButton ) , " clicked " , G_CALLBACK ( yon_password_new ) , user ) ;
g_signal_connect ( G_OBJECT ( user - > AdminCheck ) , " clicked " , G_CALLBACK ( yon_user_admin_check ) , user ) ;
g_signal_connect ( G_OBJECT ( user - > RemoveButton ) , " clicked " , G_CALLBACK ( on_user_remove_clicked ) , user ) ;
return user ;
}
@ -169,6 +174,8 @@ void yon_user_init(main_window *widgets){
config_str users = yon_config_get_all_by_key ( USERADD_parameter_search , & users_size ) ;
if ( ! users_size ) {
yon_user_struct * user = yon_user_struct_new ( ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( user - > AdminCheck ) , 1 ) ;
g_signal_connect ( G_OBJECT ( user - > AdminCheck ) , " clicked " , G_CALLBACK ( yon_user_admin_check ) , widgets ) ;
g_object_set_data ( G_OBJECT ( user - > MainBox ) , " widgets " , widgets ) ;
gtk_box_pack_start ( GTK_BOX ( widgets - > UserAddBox ) , user - > MainBox , 0 , 0 , 0 ) ;
gtk_entry_set_text ( GTK_ENTRY ( user - > UsernameEntry ) , ADMINISTRATOR_LABEL ) ;
@ -176,6 +183,7 @@ void yon_user_init(main_window *widgets){
}
for ( int i = 0 ; i < users_size ; i + + ) {
yon_user_struct * user = yon_user_struct_new ( ) ;
g_signal_connect ( G_OBJECT ( user - > AdminCheck ) , " clicked " , G_CALLBACK ( yon_user_admin_check ) , widgets ) ;
g_object_set_data ( G_OBJECT ( user - > MainBox ) , " widgets " , widgets ) ;
gtk_box_pack_start ( GTK_BOX ( widgets - > UserAddBox ) , user - > MainBox , 0 , 0 , 0 ) ;
@ -190,6 +198,11 @@ void yon_user_init(main_window *widgets){
gtk_entry_set_text ( GTK_ENTRY ( user - > LoginEntry ) , login ) ;
if ( parsed_size > 0 )
gtk_entry_set_text ( GTK_ENTRY ( user - > UsernameEntry ) , parsed [ 0 ] ) ;
if ( parsed_size > 1 ) {
if ( ! yon_char_is_empty ( parsed [ 1 ] ) ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( user - > AdminCheck ) , 1 ) ;
}
}
if ( parsed_size > 5 & & ! yon_char_is_empty ( parsed [ 5 ] ) ) {
gtk_entry_set_text ( GTK_ENTRY ( user - > PasswordEntry ) , parsed [ 5 ] ) ;
gtk_combo_box_set_active ( GTK_COMBO_BOX ( user - > PasswordCombo ) , 1 ) ;