summaryrefslogtreecommitdiff
path: root/src/touchmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/touchmanager.cpp')
-rw-r--r--src/touchmanager.cpp35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/touchmanager.cpp b/src/touchmanager.cpp
index 3dd9e64a9..b78f0264d 100644
--- a/src/touchmanager.cpp
+++ b/src/touchmanager.cpp
@@ -42,6 +42,7 @@ TouchManager::TouchManager() :
mRedraw(true),
mShowJoystick(false),
mShowButtons(false),
+ mShowKeyboard(false),
mButtonsSize(1),
mJoystickSize(1),
mShow(false),
@@ -68,21 +69,20 @@ void TouchManager::init()
{
config.addListener("showScreenJoystick", this);
config.addListener("showScreenButtons", this);
+ config.addListener("showScreenKeyboard", this);
config.addListener("screenButtonsSize", this);
config.addListener("screenJoystickSize", this);
mShowJoystick = config.getBoolValue("showScreenJoystick");
mShowButtons = config.getBoolValue("showScreenButtons");
+ mShowKeyboard = config.getBoolValue("showScreenKeyboard");
mButtonsSize = config.getIntValue("screenButtonsSize");
mJoystickSize = config.getIntValue("screenJoystickSize");
setHalfJoyPad(getPadSize() / 2);
-#ifdef ANDROID
- loadTouchItem(&mKeyboard, "keyboard_icon.xml", "", -1, -1, 28, 28, NORMAL,
- nullptr, nullptr, &showKeyboard, nullptr);
-#endif
-
+ if (mShowKeyboard)
+ loadKeyboard();
if (mShowJoystick)
loadPad();
if (mShowButtons)
@@ -172,7 +172,8 @@ void TouchManager::draw()
it != it_end; ++ it)
{
const TouchItem *const item = *it;
- if (item && item->images && (mShow || item == mKeyboard))
+ if (item && item->images && (mShow ||
+ (item == mKeyboard && mShowKeyboard)))
{
mainGraphics->calcWindow(mVertexes, item->x, item->y,
item->width, item->height, *item->images);
@@ -195,7 +196,8 @@ void TouchManager::draw()
it != it_end; ++ it)
{
const TouchItem *const item = *it;
- if (item && item->images && (mShow || item == mKeyboard))
+ if (item && item->images && (mShow ||
+ (item == mKeyboard && mShowKeyboard)))
{
mainGraphics->drawImageRect(item->x, item->y,
item->width, item->height, *item->images);
@@ -220,7 +222,7 @@ bool TouchManager::processEvent(const MouseInput &mouseInput)
it != it_end; ++ it)
{
const TouchItem *const item = *it;
- if (!item || (!mShow && item != mKeyboard))
+ if (!item || (!mShow && (item != mKeyboard || !mShowKeyboard)))
continue;
const gcn::Rectangle &rect = item->rect;
if (rect.isPointInRect(x, y))
@@ -372,6 +374,12 @@ void TouchManager::loadButtons()
}
+void TouchManager::loadKeyboard()
+{
+ loadTouchItem(&mKeyboard, "keyboard_icon.xml", "", -1, -1, 28, 28, NORMAL,
+ nullptr, nullptr, &showKeyboard, nullptr);
+}
+
void TouchManager::optionChanged(const std::string &value)
{
if (value == "showScreenJoystick")
@@ -401,6 +409,17 @@ void TouchManager::optionChanged(const std::string &value)
}
mRedraw = true;
}
+ else if (value == "showScreenKeyboard")
+ {
+ if (mShowKeyboard == config.getBoolValue("showScreenKeyboard"))
+ return;
+ mShowKeyboard = config.getBoolValue("showScreenKeyboard");
+ if (mShowKeyboard)
+ loadKeyboard();
+ else
+ unloadTouchItem(&mKeyboard);
+ mRedraw = true;
+ }
else if (value == "screenButtonsSize")
{
if (mButtonsSize == config.getIntValue("screenButtonsSize"))