X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fgui%2FguiPasswordChange.cpp;h=74cd62f5b37f5f6b34a24994502277944a726108;hb=b7b5aad02758ae897fc0239f50f93e04d085ceed;hp=9ca0ba6891e2f533d501f9f4ba9b9e41eca4c00f;hpb=88ba1c70d33cfeb09b73e46d720099083925c805;p=dragonfireclient.git diff --git a/src/gui/guiPasswordChange.cpp b/src/gui/guiPasswordChange.cpp index 9ca0ba689..74cd62f5b 100644 --- a/src/gui/guiPasswordChange.cpp +++ b/src/gui/guiPasswordChange.cpp @@ -17,7 +17,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "guiPasswordChange.h" -#include "client.h" +#include "client/client.h" +#include "guiButton.h" #include #include #include @@ -37,10 +38,12 @@ const int ID_cancel = 261; GUIPasswordChange::GUIPasswordChange(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, IMenuManager *menumgr, - Client* client + Client* client, + ISimpleTextureSource *tsrc ): GUIModalMenu(env, parent, id, menumgr), - m_client(client) + m_client(client), + m_tsrc(tsrc) { } @@ -76,91 +79,94 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize) /* Calculate new sizes and positions */ - core::rect rect( - screensize.X/2 - 580/2, - screensize.Y/2 - 300/2, - screensize.X/2 + 580/2, - screensize.Y/2 + 300/2 +#ifdef __ANDROID__ + const float s = m_gui_scale * porting::getDisplayDensity() / 2; +#else + const float s = m_gui_scale; +#endif + DesiredRect = core::rect( + screensize.X / 2 - 580 * s / 2, + screensize.Y / 2 - 300 * s / 2, + screensize.X / 2 + 580 * s / 2, + screensize.Y / 2 + 300 * s / 2 ); - - DesiredRect = rect; recalculateAbsolutePosition(false); - v2s32 size = rect.getSize(); - v2s32 topleft_client(40, 0); + v2s32 size = DesiredRect.getSize(); + v2s32 topleft_client(40 * s, 0); const wchar_t *text; /* Add stuff */ - s32 ypos = 50; + s32 ypos = 50 * s; { - core::rect rect(0, 0, 150, 20); - rect += topleft_client + v2s32(25, ypos + 6); + core::rect rect(0, 0, 150 * s, 20 * s); + rect += topleft_client + v2s32(25 * s, ypos + 6 * s); text = wgettext("Old Password"); Environment->addStaticText(text, rect, false, true, this, -1); delete[] text; } { - core::rect rect(0, 0, 230, 30); - rect += topleft_client + v2s32(160, ypos); + core::rect rect(0, 0, 230 * s, 30 * s); + rect += topleft_client + v2s32(160 * s, ypos); gui::IGUIEditBox *e = Environment->addEditBox( m_oldpass.c_str(), rect, true, this, ID_oldPassword); Environment->setFocus(e); e->setPasswordBox(true); } - ypos += 50; + ypos += 50 * s; { - core::rect rect(0, 0, 150, 20); - rect += topleft_client + v2s32(25, ypos + 6); + core::rect rect(0, 0, 150 * s, 20 * s); + rect += topleft_client + v2s32(25 * s, ypos + 6 * s); text = wgettext("New Password"); Environment->addStaticText(text, rect, false, true, this, -1); delete[] text; } { - core::rect rect(0, 0, 230, 30); - rect += topleft_client + v2s32(160, ypos); + core::rect rect(0, 0, 230 * s, 30 * s); + rect += topleft_client + v2s32(160 * s, ypos); gui::IGUIEditBox *e = Environment->addEditBox( m_newpass.c_str(), rect, true, this, ID_newPassword1); e->setPasswordBox(true); } - ypos += 50; + ypos += 50 * s; { - core::rect rect(0, 0, 150, 20); - rect += topleft_client + v2s32(25, ypos + 6); + core::rect rect(0, 0, 150 * s, 20 * s); + rect += topleft_client + v2s32(25 * s, ypos + 6 * s); text = wgettext("Confirm Password"); Environment->addStaticText(text, rect, false, true, this, -1); delete[] text; } { - core::rect rect(0, 0, 230, 30); - rect += topleft_client + v2s32(160, ypos); + core::rect rect(0, 0, 230 * s, 30 * s); + rect += topleft_client + v2s32(160 * s, ypos); gui::IGUIEditBox *e = Environment->addEditBox( m_newpass_confirm.c_str(), rect, true, this, ID_newPassword2); e->setPasswordBox(true); } - ypos += 50; + ypos += 50 * s; { - core::rect rect(0, 0, 100, 30); - rect = rect + v2s32(size.X / 4 + 56, ypos); + core::rect rect(0, 0, 100 * s, 30 * s); + rect = rect + v2s32(size.X / 4 + 56 * s, ypos); text = wgettext("Change"); - Environment->addButton(rect, this, ID_change, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, ID_change, text); delete[] text; } { - core::rect rect(0, 0, 100, 30); - rect = rect + v2s32(size.X / 4 + 185, ypos); + core::rect rect(0, 0, 100 * s, 30 * s); + rect = rect + v2s32(size.X / 4 + 185 * s, ypos); text = wgettext("Cancel"); - Environment->addButton(rect, this, ID_cancel, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, ID_cancel, text); delete[] text; } - ypos += 50; + ypos += 50 * s; { - core::rect rect(0, 0, 300, 20); - rect += topleft_client + v2s32(35, ypos); + core::rect rect(0, 0, 300 * s, 20 * s); + rect += topleft_client + v2s32(35 * s, ypos); text = wgettext("Passwords do not match!"); IGUIElement *e = Environment->addStaticText( @@ -234,7 +240,7 @@ bool GUIPasswordChange::OnEvent(const SEvent &event) if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST && isVisible()) { if (!canTakeFocus(event.GUIEvent.Element)) { - dstream << "GUIPasswordChange: Not allowing focus change." + infostream << "GUIPasswordChange: Not allowing focus change." << std::endl; // Returning true disables focus change return true; @@ -287,6 +293,10 @@ bool GUIPasswordChange::getAndroidUIInput() if (!hasAndroidUIInput()) return false; + // still waiting + if (porting::getInputDialogState() == -1) + return true; + gui::IGUIElement *e = nullptr; if (m_jni_field_name == "old_password") e = getElementFromId(ID_oldPassword); @@ -294,12 +304,13 @@ bool GUIPasswordChange::getAndroidUIInput() e = getElementFromId(ID_newPassword1); else if (m_jni_field_name == "new_password_2") e = getElementFromId(ID_newPassword2); - - if (e) { - std::string text = porting::getInputDialogValue(); - e->setText(utf8_to_wide(text).c_str()); - } m_jni_field_name.clear(); + + if (!e || e->getType() != irr::gui::EGUIET_EDIT_BOX) + return false; + + std::string text = porting::getInputDialogValue(); + e->setText(utf8_to_wide(text).c_str()); return false; } #endif