diff options
Diffstat (limited to 'src/login_window.c')
-rw-r--r-- | src/login_window.c | 117 |
1 files changed, 46 insertions, 71 deletions
diff --git a/src/login_window.c b/src/login_window.c index a060d6c..241ca9b 100644 --- a/src/login_window.c +++ b/src/login_window.c @@ -8,32 +8,28 @@ #include "register.h" #include "http.h" #include "timeline.h" -#include "timeline_window.h" +#include "main_window.h" #include "log.h" GtkApplication *application; -static GtkWidget *window; -static GtkWidget *box; -static GtkWidget *instance_name_box, *email_box, *password_box; -static GtkWidget *submit_button; -static GtkWidget *spinner; +GObject *login_dialog; +GObject *instance_domain_entry, *email_entry, *password_entry; +GObject *login_button, *cancel_button; +GObject *spinner; static gboolean login_completed(gpointer data) { int *val_ptr = data; gtk_spinner_stop(GTK_SPINNER(spinner)); if (*val_ptr) { + free(val_ptr); log_msg(LOG_WARNING, "login_callback", "login failed"); + return G_SOURCE_REMOVE; } else { - create_timeline_window(application, NULL); + free(val_ptr); + gtk_widget_destroy(GTK_WIDGET(login_dialog)); + return G_SOURCE_REMOVE; } - - /* gtk_window_close(GTK_WINDOW(window)); */ - /* gtk_application_remove_window( */ - /* GTK_APPLICATION(application), GTK_WINDOW(window)); */ - - free(val_ptr); - return G_SOURCE_REMOVE; } static gpointer user_register(gpointer data) @@ -41,9 +37,9 @@ static gpointer user_register(gpointer data) int *val_ptr; const char *instance_name, *email, *password; - instance_name = gtk_entry_get_text(GTK_ENTRY(instance_name_box)); - email = gtk_entry_get_text(GTK_ENTRY(email_box)); - password = gtk_entry_get_text(GTK_ENTRY(password_box)); + instance_name = gtk_entry_get_text(GTK_ENTRY(instance_domain_entry)); + email = gtk_entry_get_text(GTK_ENTRY(email_entry)); + password = gtk_entry_get_text(GTK_ENTRY(password_entry)); val_ptr = malloc(sizeof(int)); *val_ptr = register_app(instance_name); @@ -68,15 +64,16 @@ static void submit_login_form() static bool is_form_valid() { - if (strlen(gtk_entry_get_text(GTK_ENTRY(instance_name_box))) < 1 || - strlen(gtk_entry_get_text(GTK_ENTRY(email_box))) < 1 || - strlen(gtk_entry_get_text(GTK_ENTRY(password_box))) < 1) + if (strlen(gtk_entry_get_text(GTK_ENTRY(instance_domain_entry))) < 1 || + strlen(gtk_entry_get_text(GTK_ENTRY(email_entry))) < 1 || + strlen(gtk_entry_get_text(GTK_ENTRY(password_entry))) < 1) return false; return true; } -static void submit_button_clicked(GtkButton *button, gpointer user_data) +static void login_button_click(GtkButton *button, gpointer user_data) { + g_print("clicked\n"); if (is_form_valid()) submit_login_form(); } @@ -87,67 +84,45 @@ static void form_on_activate(GtkEntry *entry, gpointer user_data) submit_login_form(); } -static void on_form_changed(GtkWidget *widget, gpointer data) +static void login_form_changed(GtkWidget *widget, gpointer data) { if (is_form_valid()) - gtk_widget_set_sensitive(GTK_WIDGET(submit_button), true); + gtk_widget_set_sensitive(GTK_WIDGET(login_button), true); else - gtk_widget_set_sensitive(GTK_WIDGET(submit_button), false); + gtk_widget_set_sensitive(GTK_WIDGET(login_button), false); } -void create_login_window(GtkApplication *app, gpointer user_data) +int create_login_dialog() { - application = app; - window = gtk_application_window_new(app); - gtk_window_set_title(GTK_WINDOW(window), "ap_client"); - gtk_window_set_default_size(GTK_WINDOW(window), 800, 600); - gtk_container_set_border_width(GTK_CONTAINER(window), 10); - /* g_signal_connect(app, "window-removed", G_CALLBACK(window_removed), NULL); */ - - box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); - gtk_widget_set_valign(GTK_WIDGET(box), GTK_ALIGN_CENTER); - gtk_widget_set_halign(GTK_WIDGET(box), GTK_ALIGN_CENTER); - - instance_name_box = gtk_entry_new(); - gtk_entry_set_placeholder_text( - GTK_ENTRY(instance_name_box), "Instance domain"); - g_signal_connect(GTK_ENTRY(instance_name_box), "activate", - G_CALLBACK(form_on_activate), NULL); - g_signal_connect(G_OBJECT(instance_name_box), "changed", - G_CALLBACK(on_form_changed), NULL); + GtkBuilder *login_builder; - email_box = gtk_entry_new(); - gtk_entry_set_placeholder_text(GTK_ENTRY(email_box), "Email"); - gtk_entry_set_input_purpose(GTK_ENTRY(email_box), GTK_INPUT_PURPOSE_EMAIL); - g_signal_connect(GTK_ENTRY(email_box), "activate", + login_builder = gtk_builder_new_from_file("data/login_window.ui"); + login_dialog = gtk_builder_get_object(login_builder, "login_dialog"); + + instance_domain_entry = gtk_builder_get_object(login_builder, "instance_name"); + g_signal_connect(G_OBJECT(instance_domain_entry), "changed", + G_CALLBACK(login_form_changed), NULL); + g_signal_connect(GTK_ENTRY(instance_domain_entry), "activate", G_CALLBACK(form_on_activate), NULL); - g_signal_connect( - G_OBJECT(email_box), "changed", G_CALLBACK(on_form_changed), NULL); - - password_box = gtk_entry_new(); - gtk_entry_set_placeholder_text(GTK_ENTRY(password_box), "Password"); - gtk_entry_set_input_purpose( - GTK_ENTRY(password_box), GTK_INPUT_PURPOSE_PASSWORD); - gtk_entry_set_visibility(GTK_ENTRY(password_box), false); - g_signal_connect(GTK_ENTRY(password_box), "activate", + + email_entry = gtk_builder_get_object(login_builder, "email"); + g_signal_connect(G_OBJECT(email_entry), "changed", + G_CALLBACK(login_form_changed), NULL); + g_signal_connect(GTK_ENTRY(email_entry), "activate", G_CALLBACK(form_on_activate), NULL); - g_signal_connect(G_OBJECT(password_box), "changed", - G_CALLBACK(on_form_changed), NULL); - submit_button = gtk_button_new(); - g_signal_connect(GTK_BUTTON(submit_button), "clicked", - G_CALLBACK(submit_button_clicked), G_OBJECT(window)); - gtk_button_set_label(GTK_BUTTON(submit_button), "Submit"); - gtk_widget_set_sensitive(GTK_WIDGET(submit_button), false); + password_entry = gtk_builder_get_object(login_builder, "password"); + g_signal_connect(G_OBJECT(password_entry), "changed", + G_CALLBACK(login_form_changed), NULL); + g_signal_connect(GTK_ENTRY(password_entry), "activate", + G_CALLBACK(form_on_activate), NULL); - spinner = gtk_spinner_new(); + login_button = gtk_builder_get_object(login_builder, "login_button"); + g_signal_connect(GTK_BUTTON(login_button), "clicked", + G_CALLBACK(login_button_click), NULL); + cancel_button = gtk_builder_get_object(login_builder, "cancel_button"); - gtk_container_add(GTK_CONTAINER(window), box); - gtk_container_add(GTK_CONTAINER(box), instance_name_box); - gtk_container_add(GTK_CONTAINER(box), email_box); - gtk_container_add(GTK_CONTAINER(box), password_box); - gtk_container_add(GTK_CONTAINER(box), submit_button); - gtk_container_add(GTK_CONTAINER(box), spinner); + spinner = gtk_builder_get_object(login_builder, "spinner"); - gtk_widget_show_all(window); + return gtk_dialog_run(GTK_DIALOG(login_dialog)); } |