X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2FguiPasswordChange.cpp;h=46de2026ce24717a28c5b516d843372d4bff0651;hb=179476d8330ff0fd03c3c95bbb8ea0f55e5ad2ed;hp=e4b77b611193ccbe2429c9ce2bc1991f500f1201;hpb=22e186b4aa88b585e71500c4e9a03bf69b0b6191;p=minetest.git diff --git a/src/guiPasswordChange.cpp b/src/guiPasswordChange.cpp index e4b77b611..46de2026c 100644 --- a/src/guiPasswordChange.cpp +++ b/src/guiPasswordChange.cpp @@ -17,9 +17,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "guiPasswordChange.h" -#include "debug.h" -#include "serialization.h" -#include +#include "client.h" #include #include #include @@ -33,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_cancel = 261; GUIPasswordChange::GUIPasswordChange(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, @@ -51,35 +50,28 @@ GUIPasswordChange::~GUIPasswordChange() 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 &children = getChildren(); + core::list 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) { + /* + save current input + */ + acceptInput(); + /* Remove stuff */ removeChildren(); - + /* Calculate new sizes and positions */ @@ -89,172 +81,176 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize) screensize.X/2 + 580/2, screensize.Y/2 + 300/2 ); - + 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; - changeCtype(""); { - core::rect rect(0, 0, 110, 20); - rect += topleft_client + v2s32(35, ypos+6); - Environment->addStaticText(wgettext("Old Password"), - rect, false, true, this, -1); + core::rect 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; } - changeCtype("C"); { core::rect 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; - changeCtype(""); { - core::rect rect(0, 0, 110, 20); - rect += topleft_client + v2s32(35, ypos+6); - Environment->addStaticText(wgettext("New Password"), - rect, false, true, this, -1); + core::rect 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; } - changeCtype("C"); { core::rect 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; - changeCtype(""); { - core::rect rect(0, 0, 110, 20); - rect += topleft_client + v2s32(35, ypos+6); - Environment->addStaticText(wgettext("Confirm Password"), - rect, false, true, this, -1); + core::rect 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; } - changeCtype("C"); { core::rect 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; - changeCtype(""); { - core::rect rect(0, 0, 140, 30); - rect = rect + v2s32(size.X/2-140/2, ypos); - Environment->addButton(rect, this, ID_change, wgettext("Change")); + core::rect 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 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 rect(0, 0, 300, 20); rect += topleft_client + v2s32(35, ypos); - IGUIElement *e = - Environment->addStaticText( - wgettext("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); + delete[] text; } - changeCtype("C"); - } void GUIPasswordChange::drawMenu() { - gui::IGUISkin* skin = Environment->getSkin(); + gui::IGUISkin *skin = Environment->getSkin(); if (!skin) return; - video::IVideoDriver* driver = 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(); } -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; } - 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; } } - 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." - <getID()) - { + if (event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) { + switch (event.GUIEvent.Caller->getID()) { case ID_change: - if(acceptInput()) + acceptInput(); + if (processInput()) 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: - if(acceptInput()) + acceptInput(); + if (processInput()) quitMenu(); return true; } @@ -263,4 +259,3 @@ bool GUIPasswordChange::OnEvent(const SEvent& event) return Parent ? Parent->OnEvent(event) : false; } -