Added configurable selectionbox width. Min width = 1, Max = 5
[oweals/minetest.git] / src / guiFormSpecMenu.h
index 3368bb82d8188c588fb1f1cbede558f7d13b0939..15bc628d17296f869b40145111cf9b7f30e03346 100644 (file)
@@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "inventorymanager.h"
 #include "modalMenu.h"
 #include "guiTable.h"
+#include "clientserver.h"
 
 class IGameDef;
 class InventoryManager;
@@ -39,6 +40,7 @@ typedef enum {
        f_TabHeader,
        f_CheckBox,
        f_DropDown,
+       f_ScrollBar,
        f_Unknown
 } FormspecFieldType;
 
@@ -150,7 +152,7 @@ class GUIFormSpecMenu : public GUIModalMenu
                {
                }
                FieldSpec(const std::wstring &name, const std::wstring &label,
-                         const std::wstring &fdeflt, int id) :
+                               const std::wstring &fdeflt, int id) :
                        fname(name),
                        flabel(label),
                        fdefault(fdeflt),
@@ -273,6 +275,10 @@ public:
        static bool parseColor(const std::string &value,
                        video::SColor &color, bool quiet);
 
+#ifdef __ANDROID__
+       bool getAndroidUIInput();
+#endif
+
 protected:
        v2s32 getBasePos() const
        {
@@ -301,7 +307,8 @@ protected:
        std::vector<std::pair<FieldSpec,GUITable*> > m_tables;
        std::vector<std::pair<FieldSpec,gui::IGUICheckBox*> > m_checkboxes;
        std::map<std::wstring, TooltipSpec> m_tooltips;
-       
+       std::vector<std::pair<FieldSpec,gui::IGUIScrollBar*> > m_scrollbars;
+
        ItemSpec *m_selected_item;
        u32 m_selected_amount;
        bool m_selected_dragging;
@@ -339,6 +346,7 @@ private:
        TextDest         *m_text_dst;
        GUIFormSpecMenu **m_ext_ptr;
        gui::IGUIFont    *m_font;
+       unsigned int      m_formspec_version;
 
        typedef struct {
                v2s32 size;
@@ -390,6 +398,8 @@ private:
        void parseBackgroundColor(parserData* data,std::string element);
        void parseListColors(parserData* data,std::string element);
        void parseTooltip(parserData* data,std::string element);
+       bool parseVersionDirect(std::string data);
+       void parseScrollBar(parserData* data, std::string element);
 
        /**
         * check if event is part of a double click
@@ -406,6 +416,14 @@ private:
        clickpos m_doubleclickdetect[2];
 
        int m_btn_height;
+
+       std::wstring getLabelByID(s32 id);
+       std::wstring getNameByID(s32 id);
+#ifdef __ANDROID__
+       v2s32 m_down_pos;
+       std::wstring m_JavaDialogFieldName;
+#endif
+
 };
 
 class FormspecFormSource: public IFormSource
@@ -420,7 +438,7 @@ public:
        {}
 
        void setForm(std::string formspec) {
-               m_formspec = formspec;
+               m_formspec = FORMSPEC_VERSION_STRING + formspec;
        }
 
        std::string getForm()