summaryrefslogtreecommitdiff
path: root/src/login_window.c
diff options
context:
space:
mode:
authornirav <nirav@teisuu.com>2019-03-26 07:54:56 +0530
committerDandelion <nirav@teisuu.com>2019-03-26 07:54:56 +0530
commitcc727e972f7fdc871ee1f42cf014151b67422bf0 (patch)
treeeda5279bf96e4999e4219beb331df4646cfd2a5b /src/login_window.c
parent4b27c1a348d8de036dabd5525452f5b9ad08a32b (diff)
downloadap_client-cc727e972f7fdc871ee1f42cf014151b67422bf0.tar.gz
ap_client-cc727e972f7fdc871ee1f42cf014151b67422bf0.zip
Update login flow and timeline window
Diffstat (limited to 'src/login_window.c')
-rw-r--r--src/login_window.c117
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));
}