summaryrefslogtreecommitdiff
path: root/src/login/LoginView.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-24 20:19:19 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-24 20:19:19 (GMT)
commit97b35bc47059315d4138c8e0827842d2c03de152 (patch)
treefeaf7a8c018982ba9d7ca1b8e6e15294abfdfc84 /src/login/LoginView.cpp
parent04488081d3fa0cd3dfb2939e5d902bc894df150d (diff)
downloadpowder-97b35bc47059315d4138c8e0827842d2c03de152.zip
powder-97b35bc47059315d4138c8e0827842d2c03de152.tar.gz
Various
Diffstat (limited to 'src/login/LoginView.cpp')
-rw-r--r--src/login/LoginView.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/login/LoginView.cpp b/src/login/LoginView.cpp
new file mode 100644
index 0000000..bb88c15
--- /dev/null
+++ b/src/login/LoginView.cpp
@@ -0,0 +1,72 @@
+/*
+ * LoginView.cpp
+ *
+ * Created on: Jan 24, 2012
+ * Author: Simon
+ */
+
+#include "LoginView.h"
+
+class LoginView::LoginAction : public ui::ButtonAction
+{
+ LoginView * v;
+public:
+ LoginAction(LoginView * _v) { v = _v; }
+ void ActionCallback(ui::Button * sender)
+ {
+ v->c->Login(v->usernameField->GetText(), v->passwordField->GetText());
+ }
+};
+
+LoginView::LoginView():
+ ui::Window(ui::Point(-1, -1), ui::Point(200, 100)),
+ loginButton(new ui::Button(ui::Point(200-50, 100-16), ui::Point(50, 16), "Login")),
+ cancelButton(new ui::Button(ui::Point(0, 100-16), ui::Point(50, 16), "Cancel")),
+ titleLabel(new ui::Label(ui::Point(4, 2), ui::Point(200-16, 16), "Server login")),
+ usernameField(new ui::Textbox(ui::Point(8, 20), ui::Point(200-16, 16), "")),
+ passwordField(new ui::Textbox(ui::Point(8, 40), ui::Point(200-16, 16), "")),
+ infoLabel(new ui::Label(ui::Point(8, 60), ui::Point(200-16, 16), ""))
+{
+ AddComponent(loginButton);
+ loginButton->SetAlignment(AlignCentre, AlignBottom);
+ loginButton->SetActionCallback(new LoginAction(this));
+ AddComponent(cancelButton);
+ cancelButton->SetAlignment(AlignCentre, AlignBottom);
+ AddComponent(titleLabel);
+ titleLabel->SetAlignment(AlignLeft, AlignBottom);
+ AddComponent(usernameField);
+ usernameField->SetAlignment(AlignLeft, AlignBottom);
+ AddComponent(passwordField);
+ passwordField->SetAlignment(AlignLeft, AlignBottom);
+ passwordField->SetHidden(true);
+ infoLabel->SetAlignment(AlignCentre, AlignBottom);
+ AddComponent(infoLabel);
+}
+
+void LoginView::NotifyStatusChanged(LoginModel * sender)
+{
+ infoLabel->SetText(sender->GetStatusText());
+}
+
+void LoginView::OnDraw()
+{
+ Graphics * g = ui::Engine::Ref().g;
+ g->clearrect(Position.X-2, Position.Y-2, Size.X+3, Size.Y+3);
+ g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 255, 255, 255, 255);
+}
+
+LoginView::~LoginView() {
+ RemoveComponent(titleLabel);
+ RemoveComponent(loginButton);
+ RemoveComponent(cancelButton);
+ RemoveComponent(usernameField);
+ RemoveComponent(passwordField);
+ RemoveComponent(infoLabel);
+ delete cancelButton;
+ delete loginButton;
+ delete titleLabel;
+ delete usernameField;
+ delete passwordField;
+ delete infoLabel;
+}
+