AutoCatGnome/gui/LoginWindow.cpp
2022-01-05 22:36:47 +03:00

70 lines
1.9 KiB
C++

//
// Created by selim on 03.01.2022.
//
#include "LoginWindow.h"
#include "../services/Api.h"
#include <gtkmm/box.h>
#include <iostream>
LoginWindow::LoginWindow() {
set_title("Login");
set_default_size(640, 480);
_emailField.set_placeholder_text("Email");
_passwordField.set_placeholder_text("Password");
_passwordField.set_input_purpose(Gtk::InputPurpose::PASSWORD);
_passwordField.set_visibility(false);
_emailField.signal_changed().connect(sigc::mem_fun(*this, &LoginWindow::ValidateFields));
_passwordField.signal_changed().connect(sigc::mem_fun(*this, &LoginWindow::ValidateFields));
_loginButton.set_margin_top(8);
_loginButton.set_margin_bottom(8);
_loginButton.set_label("Log in");
_loginButton.signal_clicked().connect(sigc::mem_fun(*this, &LoginWindow::LoginClicked));
_loginButton.set_sensitive(false);
Gtk::Box box(Gtk::Orientation::VERTICAL, 8);
box.set_margin(48);
box.set_valign(Gtk::Align::CENTER);
box.append(_emailField);
box.append(_passwordField);
box.append(_loginButton);
box.append(_spinner);
set_child(box);
}
//Task<int> foo() {
// co_return 42;
//}
//
//Task<int> bar() {
// auto xxx = co_await foo();
// std::cout << "xxx: " << xxx << std::endl;
//}
void LoginWindow::LoginClicked() {
auto email = _emailField.get_text();
auto password = _passwordField.get_text();
_loginButton.set_sensitive(false);
_emailField.set_sensitive(false);
_passwordField.set_sensitive(false);
_spinner.start();
std::cout << "Login clicked" << std::endl;
std::cout << "Login: " << email << std::endl;
std::cout << "Password: " << password << std::endl;
User user = co_await Api::login(email, password);
}
void LoginWindow::ValidateFields() {
bool buttonEnabled = _emailField.get_text_length() > 0 && _passwordField.get_text_length() > 0;
_loginButton.set_sensitive(buttonEnabled);
}