]> git.lizzy.rs Git - minetest.git/blobdiff - src/guiPasswordChange.cpp
LINT: Add files to whitelist, fix detected indent errors
[minetest.git] / src / guiPasswordChange.cpp
index fabe7511013d8ccd56394c1626859793b4a19d3e..46de2026ce24717a28c5b516d843372d4bff0651 100644 (file)
@@ -1,7 +1,7 @@
 /*
 /*
-Part of Minetest-c55
-Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
-Copyright (C) 2011 Ciaran Gultnieks <ciaran@ciarang.com>
+Part of Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
+Copyright (C) 2013 Ciaran Gultnieks <ciaran@ciarang.com>
 
 Permission to use, copy, modify, and distribute this software for any
 purpose with or without fee is hereby granted, provided that the above
 
 Permission to use, copy, modify, and distribute this software for any
 purpose with or without fee is hereby granted, provided that the above
@@ -17,9 +17,12 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
 
 #include "guiPasswordChange.h"
 */
 
 #include "guiPasswordChange.h"
-#include "debug.h"
-#include "serialization.h"
-#include <string>
+#include "client.h"
+#include <IGUICheckBox.h>
+#include <IGUIEditBox.h>
+#include <IGUIButton.h>
+#include <IGUIStaticText.h>
+#include <IGUIFont.h>
 
 #include "gettext.h"
 
 
 #include "gettext.h"
 
@@ -28,6 +31,7 @@ const int ID_newPassword1 = 257;
 const int ID_newPassword2 = 258;
 const int ID_change = 259;
 const int ID_message = 260;
 const int ID_newPassword2 = 258;
 const int ID_change = 259;
 const int ID_message = 260;
+const int ID_cancel = 261;
 
 GUIPasswordChange::GUIPasswordChange(gui::IGUIEnvironment* env,
                gui::IGUIElement* parent, s32 id,
 
 GUIPasswordChange::GUIPasswordChange(gui::IGUIEnvironment* env,
                gui::IGUIElement* parent, s32 id,
@@ -46,35 +50,28 @@ GUIPasswordChange::~GUIPasswordChange()
 
 void GUIPasswordChange::removeChildren()
 {
 
 void GUIPasswordChange::removeChildren()
 {
-       {
-               gui::IGUIElement *e = getElementFromId(ID_oldPassword);
-               if(e != NULL)
-                       e->remove();
-       }
-       {
-               gui::IGUIElement *e = getElementFromId(ID_newPassword1);
-               if(e != NULL)
-                       e->remove();
+       const core::list<gui::IGUIElement *> &children = getChildren();
+       core::list<gui::IGUIElement *> children_copy;
+       for (gui::IGUIElement *i : children) {
+               children_copy.push_back(i);
        }
        }
-       {
-               gui::IGUIElement *e = getElementFromId(ID_newPassword2);
-               if(e != NULL)
-                       e->remove();
-       }
-       {
-               gui::IGUIElement *e = getElementFromId(ID_change);
-               if(e != NULL)
-                       e->remove();
+
+       for (gui::IGUIElement *i : children_copy) {
+               i->remove();
        }
 }
        }
 }
-
 void GUIPasswordChange::regenerateGui(v2u32 screensize)
 {
 void GUIPasswordChange::regenerateGui(v2u32 screensize)
 {
+       /*
+               save current input
+       */
+       acceptInput();
+
        /*
                Remove stuff
        */
        removeChildren();
        /*
                Remove stuff
        */
        removeChildren();
-       
+
        /*
                Calculate new sizes and positions
        */
        /*
                Calculate new sizes and positions
        */
@@ -84,164 +81,176 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize)
                        screensize.X/2 + 580/2,
                        screensize.Y/2 + 300/2
        );
                        screensize.X/2 + 580/2,
                        screensize.Y/2 + 300/2
        );
-       
+
        DesiredRect = rect;
        recalculateAbsolutePosition(false);
 
        v2s32 size = rect.getSize();
        v2s32 topleft_client(40, 0);
        DesiredRect = rect;
        recalculateAbsolutePosition(false);
 
        v2s32 size = rect.getSize();
        v2s32 topleft_client(40, 0);
-       v2s32 size_client = size - v2s32(40, 0);
+
+       const wchar_t *text;
 
        /*
                Add stuff
        */
        s32 ypos = 50;
        {
 
        /*
                Add stuff
        */
        s32 ypos = 50;
        {
-               core::rect<s32> rect(0, 0, 110, 20);
-               rect += topleft_client + v2s32(35, ypos+6);
-               Environment->addStaticText(chartowchar_t(gettext("Old Password")),
-                       rect, false, true, this, -1);
+               core::rect<s32> rect(0, 0, 150, 20);
+               rect += topleft_client + v2s32(25, ypos + 6);
+               text = wgettext("Old Password");
+               Environment->addStaticText(text, rect, false, true, this, -1);
+               delete[] text;
        }
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
        }
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
-               gui::IGUIEditBox *e = 
-               Environment->addEditBox(L"", rect, true, this, ID_oldPassword);
+               gui::IGUIEditBox *e = Environment->addEditBox(
+                               m_oldpass.c_str(), rect, true, this, ID_oldPassword);
                Environment->setFocus(e);
                e->setPasswordBox(true);
        }
        ypos += 50;
        {
                Environment->setFocus(e);
                e->setPasswordBox(true);
        }
        ypos += 50;
        {
-               core::rect<s32> rect(0, 0, 110, 20);
-               rect += topleft_client + v2s32(35, ypos+6);
-               Environment->addStaticText(chartowchar_t(gettext("New Password")),
-                       rect, false, true, this, -1);
+               core::rect<s32> rect(0, 0, 150, 20);
+               rect += topleft_client + v2s32(25, ypos + 6);
+               text = wgettext("New Password");
+               Environment->addStaticText(text, rect, false, true, this, -1);
+               delete[] text;
        }
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
        }
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
-               gui::IGUIEditBox *e = 
-               Environment->addEditBox(L"", rect, true, this, ID_newPassword1);
+               gui::IGUIEditBox *e = Environment->addEditBox(
+                               m_newpass.c_str(), rect, true, this, ID_newPassword1);
                e->setPasswordBox(true);
        }
        ypos += 50;
        {
                e->setPasswordBox(true);
        }
        ypos += 50;
        {
-               core::rect<s32> rect(0, 0, 110, 20);
-               rect += topleft_client + v2s32(35, ypos+6);
-               Environment->addStaticText(chartowchar_t(gettext("Confirm Password")),
-                       rect, false, true, this, -1);
+               core::rect<s32> rect(0, 0, 150, 20);
+               rect += topleft_client + v2s32(25, ypos + 6);
+               text = wgettext("Confirm Password");
+               Environment->addStaticText(text, rect, false, true, this, -1);
+               delete[] text;
        }
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
        }
        {
                core::rect<s32> rect(0, 0, 230, 30);
                rect += topleft_client + v2s32(160, ypos);
-               gui::IGUIEditBox *e = 
-               Environment->addEditBox(L"", rect, true, this, ID_newPassword2);
+               gui::IGUIEditBox *e = Environment->addEditBox(
+                               m_newpass_confirm.c_str(), rect, true, this, ID_newPassword2);
                e->setPasswordBox(true);
        }
 
        ypos += 50;
        {
                e->setPasswordBox(true);
        }
 
        ypos += 50;
        {
-               core::rect<s32> rect(0, 0, 140, 30);
-               rect = rect + v2s32(size.X/2-140/2, ypos);
-               Environment->addButton(rect, this, ID_change, chartowchar_t(gettext("Change")));
+               core::rect<s32> rect(0, 0, 100, 30);
+               rect = rect + v2s32(size.X / 4 + 56, ypos);
+               text = wgettext("Change");
+               Environment->addButton(rect, this, ID_change, text);
+               delete[] text;
+       }
+       {
+               core::rect<s32> rect(0, 0, 100, 30);
+               rect = rect + v2s32(size.X / 4 + 185, ypos);
+               text = wgettext("Cancel");
+               Environment->addButton(rect, this, ID_cancel, text);
+               delete[] text;
        }
 
        ypos += 50;
        {
                core::rect<s32> rect(0, 0, 300, 20);
                rect += topleft_client + v2s32(35, ypos);
        }
 
        ypos += 50;
        {
                core::rect<s32> rect(0, 0, 300, 20);
                rect += topleft_client + v2s32(35, ypos);
-               IGUIElement *e = 
-               Environment->addStaticText(
-                       chartowchar_t(gettext("Passwords do not match!")),
-                       rect, false, true, this, ID_message);
+               text = wgettext("Passwords do not match!");
+               IGUIElement *e =
+                       Environment->addStaticText(
+                       text, rect, false, true, this, ID_message);
                e->setVisible(false);
                e->setVisible(false);
+               delete[] text;
        }
        }
-
 }
 
 void GUIPasswordChange::drawMenu()
 {
 }
 
 void GUIPasswordChange::drawMenu()
 {
-       gui::IGUISkinskin = Environment->getSkin();
+       gui::IGUISkin *skin = Environment->getSkin();
        if (!skin)
                return;
        if (!skin)
                return;
-       video::IVideoDriverdriver = Environment->getVideoDriver();
-       
-       video::SColor bgcolor(140,0,0,0);
+       video::IVideoDriver *driver = Environment->getVideoDriver();
+
+       video::SColor bgcolor(140, 0, 0, 0);
        driver->draw2DRectangle(bgcolor, AbsoluteRect, &AbsoluteClippingRect);
 
        gui::IGUIElement::draw();
 }
 
        driver->draw2DRectangle(bgcolor, AbsoluteRect, &AbsoluteClippingRect);
 
        gui::IGUIElement::draw();
 }
 
-bool GUIPasswordChange::acceptInput()
+void GUIPasswordChange::acceptInput()
 {
 {
-               std::wstring oldpass;
-               std::wstring newpass;
-               gui::IGUIElement *e;
-               e = getElementFromId(ID_oldPassword);
-               if(e != NULL)
-                       oldpass = e->getText();
-               e = getElementFromId(ID_newPassword1);
-               if(e != NULL)
-                       newpass = e->getText();
-               e = getElementFromId(ID_newPassword2);
-               if(e != NULL && newpass != e->getText())
-               {
-                       e = getElementFromId(ID_message);
-                       if(e != NULL)
-                               e->setVisible(true);
-                       return false;
-               }
-               m_client->sendChangePassword(oldpass, newpass);
-               return true;
+       gui::IGUIElement *e;
+       e = getElementFromId(ID_oldPassword);
+       if (e != NULL)
+               m_oldpass = e->getText();
+       e = getElementFromId(ID_newPassword1);
+       if (e != NULL)
+               m_newpass = e->getText();
+       e = getElementFromId(ID_newPassword2);
+       if (e != NULL)
+               m_newpass_confirm = e->getText();
 }
 
 }
 
-bool GUIPasswordChange::OnEvent(const SEvent& event)
+bool GUIPasswordChange::processInput()
 {
 {
-       if(event.EventType==EET_KEY_INPUT_EVENT)
-       {
-               if(event.KeyInput.Key==KEY_ESCAPE && event.KeyInput.PressedDown)
-               {
+       if (m_newpass != m_newpass_confirm) {
+               gui::IGUIElement *e = getElementFromId(ID_message);
+               if (e != NULL)
+                       e->setVisible(true);
+               return false;
+       }
+       m_client->sendChangePassword(wide_to_utf8(m_oldpass), wide_to_utf8(m_newpass));
+       return true;
+}
+
+bool GUIPasswordChange::OnEvent(const SEvent &event)
+{
+       if (event.EventType == EET_KEY_INPUT_EVENT) {
+               if (event.KeyInput.Key == KEY_ESCAPE && event.KeyInput.PressedDown) {
                        quitMenu();
                        return true;
                }
                        quitMenu();
                        return true;
                }
-               if(event.KeyInput.Key==KEY_RETURN && event.KeyInput.PressedDown)
-               {
-                       if(acceptInput())
+               if (event.KeyInput.Key == KEY_RETURN && event.KeyInput.PressedDown) {
+                       acceptInput();
+                       if (processInput())
                                quitMenu();
                        return true;
                }
        }
                                quitMenu();
                        return true;
                }
        }
-       if(event.EventType==EET_GUI_EVENT)
-       {
-               if(event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST
-                               && isVisible())
-               {
-                       if(!canTakeFocus(event.GUIEvent.Element))
-                       {
-                               dstream<<"GUIPasswordChange: Not allowing focus change."
-                                               <<std::endl;
+       if (event.EventType == EET_GUI_EVENT) {
+               if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST &&
+                               isVisible()) {
+                       if (!canTakeFocus(event.GUIEvent.Element)) {
+                               dstream << "GUIPasswordChange: Not allowing focus change."
+                                       << std::endl;
                                // Returning true disables focus change
                                return true;
                        }
                }
                                // Returning true disables focus change
                                return true;
                        }
                }
-               if(event.GUIEvent.EventType==gui::EGET_BUTTON_CLICKED)
-               {
-                       switch(event.GUIEvent.Caller->getID())
-                       {
+               if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) {
+                       switch (event.GUIEvent.Caller->getID()) {
                        case ID_change:
                        case ID_change:
-                               if(acceptInput())
+                               acceptInput();
+                               if (processInput())
                                        quitMenu();
                                return true;
                                        quitMenu();
                                return true;
+                       case ID_cancel:
+                               quitMenu();
+                               return true;
                        }
                }
                        }
                }
-               if(event.GUIEvent.EventType==gui::EGET_EDITBOX_ENTER)
-               {
-                       switch(event.GUIEvent.Caller->getID())
-                       {
+               if (event.GUIEvent.EventType == gui::EGET_EDITBOX_ENTER) {
+                       switch (event.GUIEvent.Caller->getID()) {
                        case ID_oldPassword:
                        case ID_newPassword1:
                        case ID_newPassword2:
                        case ID_oldPassword:
                        case ID_newPassword1:
                        case ID_newPassword2:
-                               if(acceptInput())
+                               acceptInput();
+                               if (processInput())
                                        quitMenu();
                                return true;
                        }
                                        quitMenu();
                                return true;
                        }
@@ -250,4 +259,3 @@ bool GUIPasswordChange::OnEvent(const SEvent& event)
 
        return Parent ? Parent->OnEvent(event) : false;
 }
 
        return Parent ? Parent->OnEvent(event) : false;
 }
-