]> git.lizzy.rs Git - minetest.git/blobdiff - src/gui/guiConfirmRegistration.cpp
Update color of main menu clouds (#8172)
[minetest.git] / src / gui / guiConfirmRegistration.cpp
index 92ca94d425c0c3863ce7fc695e24376be7662e9c..9a374b405e6782628677ec82c53c25360d0b2974 100644 (file)
@@ -19,12 +19,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 */
 
 #include "guiConfirmRegistration.h"
-#include "client.h"
+#include "client/client.h"
 #include <IGUICheckBox.h>
 #include <IGUIButton.h>
 #include <IGUIStaticText.h>
 #include <IGUIFont.h>
 #include "intlGUIEditBox.h"
+#include "porting.h"
 
 #include "gettext.h"
 
@@ -42,6 +43,9 @@ GUIConfirmRegistration::GUIConfirmRegistration(gui::IGUIEnvironment *env,
                m_client(client), m_playername(playername), m_password(password),
                m_address(address), m_aborted(aborted)
 {
+#ifdef __ANDROID__
+       m_touchscreen_visible = false;
+#endif
 }
 
 GUIConfirmRegistration::~GUIConfirmRegistration()
@@ -66,13 +70,16 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize)
        /*
                Calculate new sizes and positions
        */
-       core::rect<s32> rect(screensize.X / 2 - 600 / 2, screensize.Y / 2 - 360 / 2,
-                       screensize.X / 2 + 600 / 2, screensize.Y / 2 + 360 / 2);
-
-       DesiredRect = rect;
+       const float s = m_gui_scale;
+       DesiredRect = core::rect<s32>(
+               screensize.X / 2 - 600 * s / 2,
+               screensize.Y / 2 - 360 * s / 2,
+               screensize.X / 2 + 600 * s / 2,
+               screensize.Y / 2 + 360 * s / 2
+       );
        recalculateAbsolutePosition(false);
 
-       v2s32 size = rect.getSize();
+       v2s32 size = DesiredRect.getSize();
        v2s32 topleft_client(0, 0);
 
        const wchar_t *text;
@@ -80,13 +87,13 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize)
        /*
                Add stuff
        */
-       s32 ypos = 30;
+       s32 ypos = 30 * s;
        {
                std::string address = m_address;
                if (address.empty())
                        address = "localhost";
-               core::rect<s32> rect2(0, 0, 540, 180);
-               rect2 += topleft_client + v2s32(30, ypos);
+               core::rect<s32> rect2(0, 0, 540 * s, 180 * s);
+               rect2 += topleft_client + v2s32(30 * s, ypos);
                static const std::string info_text_template = strgettext(
                                "You are about to join the server at %1$s with the "
                                "name \"%2$s\" for the first time. If you proceed, a "
@@ -96,45 +103,47 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize)
                                "Join to confirm account creation or click Cancel to "
                                "abort.");
                char info_text_buf[1024];
-               snprintf(info_text_buf, sizeof(info_text_buf), info_text_template.c_str(),
-                               address.c_str(), m_playername.c_str());
+               porting::mt_snprintf(info_text_buf, sizeof(info_text_buf),
+                               info_text_template.c_str(), address.c_str(),
+                               m_playername.c_str());
 
-               gui::IGUIEditBox *e = new gui::intlGUIEditBox(
-                               utf8_to_wide_c(info_text_buf), true, Environment, this,
-                               ID_message, rect2, false, true);
+               wchar_t *info_text_buf_wide = utf8_to_wide_c(info_text_buf);
+               gui::IGUIEditBox *e = new gui::intlGUIEditBox(info_text_buf_wide, true,
+                               Environment, this, ID_message, rect2, false, true);
+               delete[] info_text_buf_wide;
                e->drop();
                e->setMultiLine(true);
                e->setWordWrap(true);
                e->setTextAlignment(gui::EGUIA_UPPERLEFT, gui::EGUIA_CENTER);
        }
 
-       ypos += 210;
+       ypos += 210 * s;
        {
-               core::rect<s32> rect2(0, 0, 540, 30);
-               rect2 += topleft_client + v2s32(30, ypos);
+               core::rect<s32> rect2(0, 0, 540 * s, 30 * s);
+               rect2 += topleft_client + v2s32(30 * s, ypos);
                gui::IGUIEditBox *e = Environment->addEditBox(m_pass_confirm.c_str(),
                                rect2, true, this, ID_confirmPassword);
                e->setPasswordBox(true);
        }
 
-       ypos += 60;
+       ypos += 60 * s;
        {
-               core::rect<s32> rect2(0, 0, 230, 35);
-               rect2 = rect2 + v2s32(size.X / 2 - 220, ypos);
+               core::rect<s32> rect2(0, 0, 230 * s, 35 * s);
+               rect2 = rect2 + v2s32(size.X / 2 - 220 * s, ypos);
                text = wgettext("Register and Join");
                Environment->addButton(rect2, this, ID_confirm, text);
                delete[] text;
        }
        {
-               core::rect<s32> rect2(0, 0, 120, 35);
-               rect2 = rect2 + v2s32(size.X / 2 + 70, ypos);
+               core::rect<s32> rect2(0, 0, 120 * s, 35 * s);
+               rect2 = rect2 + v2s32(size.X / 2 + 70 * s, ypos);
                text = wgettext("Cancel");
                Environment->addButton(rect2, this, ID_cancel, text);
                delete[] text;
        }
        {
-               core::rect<s32> rect2(0, 0, 200, 20);
-               rect2 += topleft_client + v2s32(30, ypos - 40);
+               core::rect<s32> rect2(0, 0, 200 * s, 20 * s);
+               rect2 += topleft_client + v2s32(30 * s, ypos - 40 * s);
                text = wgettext("Passwords do not match!");
                IGUIElement *e = Environment->addStaticText(
                                text, rect2, false, true, this, ID_message);
@@ -154,6 +163,9 @@ void GUIConfirmRegistration::drawMenu()
        driver->draw2DRectangle(bgcolor, AbsoluteRect, &AbsoluteClippingRect);
 
        gui::IGUIElement::draw();
+#ifdef __ANDROID__
+       getAndroidUIInput();
+#endif
 }
 
 void GUIConfirmRegistration::closeMenu(bool goNext)
@@ -190,10 +202,14 @@ bool GUIConfirmRegistration::processInput()
 bool GUIConfirmRegistration::OnEvent(const SEvent &event)
 {
        if (event.EventType == EET_KEY_INPUT_EVENT) {
-               if (event.KeyInput.Key == KEY_ESCAPE && event.KeyInput.PressedDown) {
+               // clang-format off
+               if ((event.KeyInput.Key == KEY_ESCAPE ||
+                               event.KeyInput.Key == KEY_CANCEL) &&
+                               event.KeyInput.PressedDown) {
                        closeMenu(false);
                        return true;
                }
+               // clang-format on
                if (event.KeyInput.Key == KEY_RETURN && event.KeyInput.PressedDown) {
                        acceptInput();
                        if (processInput())
@@ -236,3 +252,19 @@ bool GUIConfirmRegistration::OnEvent(const SEvent &event)
 
        return false;
 }
+
+#ifdef __ANDROID__
+bool GUIConfirmRegistration::getAndroidUIInput()
+{
+       if (!hasAndroidUIInput() || m_jni_field_name != "password")
+               return false;
+
+       std::string text = porting::getInputDialogValue();
+       gui::IGUIElement *e = getElementFromId(ID_confirmPassword);
+       if (e)
+               e->setText(utf8_to_wide(text).c_str());
+
+       m_jni_field_name.clear();
+       return false;
+}
+#endif