diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c
index c632d9f..c109c2f 100644
--- a/source/ubl-settings-update.c
+++ b/source/ubl-settings-update.c
@@ -1426,11 +1426,26 @@ char *yon_password_hash_get(password_window *window){
const char *encription = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
const char *hash = gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry));
if (!yon_char_is_empty(hash)){
- if (!yon_char_is_empty(window->old_password)&&strcmp(hash,window->old_password)&&strlen(hash)!=128&&strlen(hash)!=64){
- yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),INCORRECT_HASH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(window->PasswordHashEntry);
- return NULL;
- }
+ // if (!yon_char_is_empty(window->old_password)&&strcmp(hash,window->old_password)){
+ switch(encription_active){
+ case 1:{
+ if (strlen(hash)!=128){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),INCORRECT_HASH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->PasswordHashEntry);
+ return NULL;
+ }
+ }
+ break;
+ case 2:{
+ if (strlen(hash)!=64){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),INCORRECT_HASH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->PasswordHashEntry);
+ return NULL;
+ }
+ }
+ break;
+ }
+ // }
char *final = yon_char_unite(encription,"|",hash,NULL);
return final;
} else {
@@ -1601,6 +1616,29 @@ void on_file_chooser_open(GtkWidget *, GtkEntry *target){
gtk_widget_destroy(dialog);
}
+void on_password_hash_sensitiveness(GtkWidget *,password_window *window){
+ const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
+ const char *repeat_password = gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
+ const char *hash = gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry));
+ if (!yon_char_is_empty(password)||!yon_char_is_empty(repeat_password)){
+ gtk_widget_set_sensitive(window->HashBox,0);
+ gtk_widget_set_sensitive(window->PasswordBox,1);
+ } else if (yon_char_is_empty(password)&&yon_char_is_empty(repeat_password)&&
+ gtk_combo_box_get_active(GTK_COMBO_BOX(window->EncryptionCombo))>0&&
+ yon_char_is_empty(hash)){
+ gtk_widget_set_sensitive(window->HashBox,1);
+ gtk_widget_set_sensitive(window->PasswordBox,1);
+ gtk_widget_set_sensitive(window->NoEncriptionCheck,1);
+ } else if (!yon_char_is_empty(hash)) {
+ gtk_widget_set_sensitive(window->HashBox,1);
+ gtk_widget_set_sensitive(window->PasswordBox,0);
+ gtk_widget_set_sensitive(window->NoEncriptionCheck,0);
+ } else {
+ gtk_widget_set_sensitive(window->HashBox,0);
+ gtk_widget_set_sensitive(window->PasswordBox,1);
+ }
+}
+
password_window *yon_password_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_password_path);
password_window *window = malloc(sizeof(password_window));
@@ -1614,10 +1652,16 @@ password_window *yon_password_window_new(){
window->PasswordHashEntry = yon_gtk_builder_get_widget(builder,"PasswordHashEntry");
window->UserCancelButton = yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"UserOkButton");
+ window->PasswordBox = yon_gtk_builder_get_widget(builder,"PasswordBox");
+ window->HashBox = yon_gtk_builder_get_widget(builder,"HashBox");
window->old_password=NULL;
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
- g_signal_connect(G_OBJECT(window->NoEncriptionCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PasswordHashEntry);
+ g_signal_connect(G_OBJECT(window->EncryptionCombo),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
+ g_signal_connect(G_OBJECT(window->NoEncriptionCheck),"toggled",G_CALLBACK(on_password_hash_sensitiveness),window);
+ g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
+ g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
+ g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
gtk_widget_show(window->Window);
return window;
}
diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h
index 8456eb3..066773a 100644
--- a/source/ubl-settings-update.h
+++ b/source/ubl-settings-update.h
@@ -279,6 +279,9 @@ typedef struct {
GtkWidget *UserCancelButton;
GtkWidget *AcceptButton;
+ GtkWidget *PasswordBox;
+ GtkWidget *HashBox;
+
const char *old_password;
} password_window;
@@ -385,4 +388,5 @@ void on_mirror_configure_accept(GtkWidget *, dictionary *dict);
char *yon_password_unencrypted_password_get(password_window *window);
char *yon_password_hash_get(password_window *window);
void yon_hash_entry_sensitiveness_update(GtkWidget *, password_window *dialog);
+void on_password_hash_sensitiveness(GtkWidget *,password_window *window);
#endif
\ No newline at end of file
diff --git a/ubl-settings-update-password.glade b/ubl-settings-update-password.glade
index 3005633..cbdd8f1 100644
--- a/ubl-settings-update-password.glade
+++ b/ubl-settings-update-password.glade
@@ -188,41 +188,41 @@
True
True
+ 1
+
+
+
+
+
+ False
+ True
2
+
+
+
+ False
+ True
+ 3
+
+