diff options
Diffstat (limited to 'src/LoginWindow.cpp')
-rw-r--r-- | src/LoginWindow.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/LoginWindow.cpp b/src/LoginWindow.cpp index 4232982..5dfbed6 100644 --- a/src/LoginWindow.cpp +++ b/src/LoginWindow.cpp @@ -10,12 +10,19 @@ namespace dchat LoginWindow::LoginWindow() : loginButton("Login") { + loginHandler = [this] + { + if(loginHandlerUser) + loginHandlerUser(usernameInput.get_text(), passwordInput.get_text()); + }; + Gtk::Label *username = Gtk::manage(new Gtk::Label()); username->set_text("Username"); username->set_halign(Gtk::ALIGN_START); attach(*username, 0, 0, 1, 1); usernameInput.set_size_request(200); + usernameInput.signal_activate().connect(loginHandler); attach_next_to(usernameInput, *username, Gtk::POS_BOTTOM, 3, 1); Gtk::Alignment *usernamePasswordSpacer = Gtk::manage(new Gtk::Alignment()); @@ -29,6 +36,7 @@ namespace dchat passwordInput.set_visibility(false); passwordInput.set_size_request(200); + passwordInput.signal_activate().connect(loginHandler); attach_next_to(passwordInput, *password, Gtk::POS_BOTTOM, 3, 1); Gtk::Alignment *loginButtonSpacerTop = Gtk::manage(new Gtk::Alignment()); @@ -39,6 +47,7 @@ namespace dchat attach_next_to(*loginButtonSpacer, *loginButtonSpacerTop, Gtk::POS_BOTTOM, 2, 1); loginButton.set_halign(Gtk::ALIGN_END); + loginButton.signal_clicked().connect(loginHandler); attach_next_to(loginButton, *loginButtonSpacer, Gtk::POS_RIGHT, 1, 1); set_halign(Gtk::ALIGN_CENTER); @@ -46,11 +55,8 @@ namespace dchat get_style_context()->add_class("login-window"); } - void LoginWindow::setLoginHandler(std::function<void()> loginHandler) + void LoginWindow::setLoginHandler(LoginHandler loginHandler) { - assert(loginHandler); - usernameInput.signal_activate().connect(loginHandler); - passwordInput.signal_activate().connect(loginHandler); - loginButton.signal_clicked().connect(loginHandler); + loginHandlerUser = loginHandler; } }
\ No newline at end of file |