// // Created by selim on 03.01.2022. // #include "LoginWindow.h" #include "MainWindow.h" #include "../services/Api.h" #include "../coro/GLibMainContextExecutor.h" #include #include #include LoginWindow::LoginWindow(): _rootBox(GTK_ORIENTATION_VERTICAL, 0), _contentBox(GTK_ORIENTATION_VERTICAL, 8) { setDefaultSize(640, 480); auto header = adw_header_bar_new(); adw_header_bar_set_title_widget(ADW_HEADER_BAR(header), gtk_label_new("Login")); auto loginButton = gtk_button_new(); gtk_button_set_label(GTK_BUTTON(loginButton), "Log in"); gtk_widget_set_margin_top(loginButton, 8); gtk_widget_set_margin_bottom(loginButton, 8); gtk_widget_set_sensitive(loginButton, false); auto spinner = gtk_spinner_new(); _loginEntry.setPlaceholder("Email"); _loginEntry.setPurpose(GTK_INPUT_PURPOSE_EMAIL); _passwordEntry.setPlaceholder("Password"); _passwordEntry.setPurpose(GTK_INPUT_PURPOSE_PASSWORD); _passwordEntry.setVisibility(false); _contentBox.append(_loginEntry); _contentBox.append(_passwordEntry); _contentBox.append(loginButton); _contentBox.append(spinner); _contentBox.setMargins(48); _contentBox.setVAlign(GTK_ALIGN_CENTER); _contentBox.setVExpand(true); _rootBox.append(header); _rootBox.append(_contentBox); adw_window_set_content(ADW_WINDOW(_window), _rootBox.gobj()); // _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); } void LoginWindow::loginClicked() { // auto email = _emailField.get_text(); // auto password = _passwordField.get_text(); // // enableControls(false); // _spinner.start(); // // try { // User user = co_await Api::login(email, password).scheduleOn(GLibMainContextExecutor::instance()); // auto app = this->get_application(); // auto mainWindow = new MainWindow(); // mainWindow->show(); // hide(); // app->add_window(*mainWindow); // app->remove_window(*this); // } catch (std::exception& ex) { // enableControls(true); // _spinner.stop(); // showError(ex.what()); // } } void LoginWindow::validateFields() { // bool buttonEnabled = _emailField.get_text_length() > 0 && _passwordField.get_text_length() > 0; // _loginButton.set_sensitive(buttonEnabled); } void LoginWindow::showError(const std::string& message) { // _dialog = std::make_unique("Error", // false, // Gtk::MessageType::ERROR, // Gtk::ButtonsType::OK, // true); // _dialog->set_secondary_text(message); // _dialog->set_transient_for(*this); // _dialog->set_hide_on_close(true); // _dialog->signal_response().connect(sigc::hide(sigc::mem_fun(*_dialog, &Gtk::Widget::hide))); // _dialog->show(); } void LoginWindow::enableControls(bool enable) { // _loginButton.set_sensitive(enable); // _emailField.set_sensitive(enable); // _passwordField.set_sensitive(enable); }