diff --git a/gresource.xml b/gresource.xml
index f736816..8ddfb99 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -7,6 +7,7 @@
ubl-settings-update-mirror-add.glade
ubl-settings-update-mirror-path-add.glade
ubl-settings-update-mirror-configure.glade
+ ubl-settings-update-password.glade
ubl-settings-update.css
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 4fa7a4d..4c61581 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -37,6 +37,7 @@ set(DEPENDFILES
../ubl-settings-update-mirror-add.glade
../ubl-settings-update-mirror-path-add.glade
../ubl-settings-update-mirror-configure.glade
+ ../ubl-settings-update-password.glade
../gresource.xml
../ubl-settings-update-banner.png
../ubl-settings-update.css
diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c
index 6d5ca16..1802420 100644
--- a/source/ubl-settings-update.c
+++ b/source/ubl-settings-update.c
@@ -313,7 +313,7 @@ void yon_interface_update(main_window *widgets){
gtk_list_store_set(widgets->WebPublicationList,&iter,0,0,-1);
}
if (cur_size>1&&!strcmp(parsed[1],"listing")){
-
+ gtk_list_store_set(widgets->WebPublicationList,&iter,3,1,-1);
}
if (cur_size>2&&!yon_char_is_empty(parsed[2])){
gtk_list_store_set(widgets->WebPublicationList,&iter,4,parsed[2],-1);
@@ -392,7 +392,6 @@ void on_selection_changed(GtkWidget *self, main_window *widgets){
}
}
-
void on_web_publish_path_changed(GtkWidget *, web_publication_add_window *window){
gtk_list_store_clear(window->list);
char *path = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry));
@@ -448,6 +447,17 @@ void on_mirror_add(GtkWidget *,main_window *widgets){
}
+void on_password_open(GtkWidget *, web_publication_add_window *window){
+ password_window *dialog = yon_password_window_new();
+ yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(dialog->PasswordEntry));
+ yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(dialog->PasswordHashEntry));
+ yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(dialog->RepeatPasswordEntry));
+ dictionary *dict = NULL;
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",dialog);
+ yon_dictionary_add_or_create_if_exists_with_data(dict,"target",window->UserPasswordEntry);
+ g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_password_accept),dict);
+}
+
void on_web_publish_remove(GtkWidget *self,main_window *widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text=REMOVE_REPO_WARNING_LABEL;
@@ -924,6 +934,36 @@ void on_mirror_configure_accept(GtkWidget *, dictionary *dict){
gtk_widget_destroy(window->Window);
}
+void on_password_accept(GtkWidget *,dictionary *dict){
+ password_window *window = yon_dictionary_get_data(dict->first,password_window*);
+ GtkWidget *target = yon_dictionary_get_data(dict->first->next,GtkWidget*);
+
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck))){
+ char *hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry));
+ if (yon_char_is_empty(hash)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->PasswordHashEntry);
+ return;
+ }
+ gtk_entry_set_text(GTK_ENTRY(target),hash);
+ } else {
+ char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
+ char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
+ if (strcmp(password,password_check)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(window->PasswordEntry);
+ yon_ubl_status_highlight_incorrect(window->RepeatPasswordEntry);
+ return;
+ }
+ char *encryption = (char*)gtk_entry_get_text(GTK_ENTRY(window->EncryptionCombo));
+ char *final_text = yon_char_unite(encryption,password,NULL);
+ gtk_entry_set_text(GTK_ENTRY(target),final_text);
+
+ }
+ gtk_widget_destroy(window->Window);
+
+}
+
void on_mirror_path_removed(GtkWidget *, GtkWidget *target){
if (GTK_IS_WIDGET(target)){
gtk_widget_destroy(target);
@@ -992,6 +1032,25 @@ void on_file_chooser_open(GtkWidget *, GtkEntry *target){
gtk_widget_destroy(dialog);
}
+password_window *yon_password_window_new(){
+ GtkBuilder *builder = gtk_builder_new_from_resource(glade_password_path);
+ password_window *window = malloc(sizeof(password_window));
+ window->Window = yon_gtk_builder_get_widget(builder,"PasswordWindow");
+ window->HeadLabel = yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
+ window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
+ window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
+ window->RepeatPasswordEntry = yon_gtk_builder_get_widget(builder,"RepeatPasswordEntry");
+ window->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
+ window->NoEncriptionCheck = yon_gtk_builder_get_widget(builder,"NoEncriptionCheck");
+ 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");
+ 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);
+ gtk_widget_show(window->Window);
+ return window;
+}
+
repo_add_window *yon_repo_add_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_repo_add_path);
repo_add_window *window = malloc(sizeof(repo_add_window));
@@ -1044,14 +1103,19 @@ web_publication_add_window *yon_web_publication_add_window_new(){
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
+ window->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer"));
+ yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->UserPasswordEntry));
window->name=NULL;
g_signal_connect(G_OBJECT(window->SelectionCellRenderer),"toggled",G_CALLBACK(on_cell_renderer_toggle_toggled),window->RepositoriesTree);
g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_file_chooser_open),window->PathEntry);
g_signal_connect(G_OBJECT(window->PathEntry),"changed",G_CALLBACK(on_web_publish_path_changed),window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
+ g_signal_connect(G_OBJECT(window->PasswordButton),"clicked",G_CALLBACK(on_password_open),window);
+ g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->PasswordButton);
+ g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->UserPasswordEntry);
gtk_widget_show(window->Window);
return window;
diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h
index 8f4ab7f..4500bec 100644
--- a/source/ubl-settings-update.h
+++ b/source/ubl-settings-update.h
@@ -27,6 +27,7 @@
#define glade_mirror_configure_path "/com/ublinux/ui/ubl-settings-update-mirror-configure.glade"
#define glade_mirror_add_path "/com/ublinux/ui/ubl-settings-update-mirror-add.glade"
#define glade_mirror_path_add_path "/com/ublinux/ui/ubl-settings-update-mirror-path-add.glade"
+#define glade_password_path "/com/ublinux/ui/ubl-settings-update-password.glade"
#define banner_path "/com/ublinux/images/ubl-settings-update-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-update.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
@@ -169,6 +170,7 @@ typedef struct {
GtkWidget *UserPasswordCheck;
GtkWidget *UserPasswordCombo;
GtkWidget *UserPasswordEntry;
+ GtkWidget *PasswordButton;
GtkWidget *AcceptButton;
GtkWidget *CancelButton;
GtkListStore *list;
@@ -220,6 +222,20 @@ typedef struct {
GtkWidget *UpdatesRequestDelaySpin;
} mirror_configure_window;
+typedef struct {
+ GtkWidget *Window;
+ GtkWidget *HeadLabel;
+ GtkWidget *StatusBox;
+
+ GtkWidget *PasswordEntry;
+ GtkWidget *RepeatPasswordEntry;
+ GtkWidget *EncryptionCombo;
+ GtkWidget *NoEncriptionCheck;
+ GtkWidget *PasswordHashEntry;
+ GtkWidget *UserCancelButton;
+ GtkWidget *AcceptButton;
+
+} password_window;
typedef struct {
GtkWidget *Window;
@@ -245,7 +261,11 @@ void on_repo_remove(GtkWidget *self, main_window *widgets);
void on_web_publish_remove_accept(GtkWidget *, main_window *widgets);
void on_mirror_remove_accept(GtkWidget *, main_window *widgets);
void on_repositories_remove_accept(GtkWidget *, main_window *widgets);
+void on_password_accept();
+
+void on_password_open(GtkWidget *, web_publication_add_window *window);
+password_window *yon_password_window_new();
repo_add_window *yon_repo_add_window_new();
web_publication_add_window *yon_web_publication_add_window_new();
mirror_add_window *yon_mirror_add_window_new();
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index d94571e..0afc557 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -9,6 +9,8 @@
#define REMOVE_REPO_WARNING_LABEL _("Are you sure want to remove repository?")
#define NO_SHARED_REPOS_LABEL _("No repositories were chosen to share")
+ #define PASSWORD_MISMATCH_LABEL _("passwords do not match")
+
// #define _LABEL _("Update")
// #define _LABEL _("Repositories")
// #define _LABEL _("Publication")
@@ -52,6 +54,7 @@
// #define _LABEL _("Repositories list:")
// #define _LABEL _("All repositories")
// #define _LABEL _("Choose")
+ // #define _LABEL _("Accept")
// #define _LABEL _("Repository name")
// #define _LABEL _("Repository connection configuration")
// #define _LABEL _("Authorization parameters")
diff --git a/ubl-settings-update-mirror-add.glade b/ubl-settings-update-mirror-add.glade
index 03bda0b..ade5c7d 100644
--- a/ubl-settings-update-mirror-add.glade
+++ b/ubl-settings-update-mirror-add.glade
@@ -1,6 +1,6 @@
-
+