diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 128 |
1 files changed, 2 insertions, 126 deletions
@@ -7,136 +7,12 @@ #include "auth.h" #include "http.h" #include "timeline.h" -#include "window.h" +#include "login_window.h" -static GtkWidget *window; -static GtkWidget *box; -static GtkWidget *instance_name_box, *email_box, *password_box; -static GtkWidget *submit_button; -static GtkWidget *spinner; - -static void login_callback(bool success) -{ - if (!success) { - fprintf(stderr, "login_callback(): login failed\n"); - gtk_spinner_stop(GTK_SPINNER(spinner)); - return; - } - - printf("login success\n"); - gtk_spinner_stop(GTK_SPINNER(spinner)); -} - -static void register_callback(bool success) -{ - if (!success) { - gtk_spinner_stop(GTK_SPINNER(spinner)); - fprintf(stderr, "register_callback(): register failed\n"); - return; - } - printf("register success\n"); - - const char *email, *password; - email = gtk_entry_get_text(GTK_ENTRY(email_box)); - password = gtk_entry_get_text(GTK_ENTRY(password_box)); - - if (login(email, password, &login_callback)) { - gtk_spinner_stop(GTK_SPINNER(spinner)); - return; - } -} - -static void submit_login_form() -{ - gtk_spinner_start(GTK_SPINNER(spinner)); - const char *instance_name; - instance_name = gtk_entry_get_text(GTK_ENTRY(instance_name_box)); - if (register_app(instance_name, ®ister_callback)) { - gtk_spinner_stop(GTK_SPINNER(spinner)); - return; - } -} - -static void submit_button_clicked(GtkButton *button, gpointer user_data) -{ - submit_login_form(); -} - -static void form_on_activate(GtkEntry *entry, gpointer user_data) -{ - 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) - return false; - return true; -} - -static void on_form_changed(GtkWidget *widget, gpointer data) -{ - if (is_form_valid()) - gtk_widget_set_sensitive(GTK_WIDGET(submit_button), true); - else - gtk_widget_set_sensitive(GTK_WIDGET(submit_button), false); -} static void activate(GtkApplication *app, gpointer user_data) { - 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); - - 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); - - 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", - 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", - 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); - - spinner = gtk_spinner_new(); - - 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); - - gtk_widget_show_all(window); + create_login_window(app, user_data); } int main(int argc, char **argv) |