ANDROIDSDL: implemented checkbox for change mouse mode in Options menu
This commit is contained in:
parent
ca55163ea1
commit
15acee29f1
11 changed files with 134 additions and 0 deletions
|
@ -27,6 +27,7 @@
|
|||
#include "backends/platform/androidsdl/androidsdl-sdl.h"
|
||||
#include "backends/events/androidsdl/androidsdl-events.h"
|
||||
#include "backends/graphics/androidsdl/androidsdl-graphics.h"
|
||||
#include <SDL_android.h>
|
||||
|
||||
void OSystem_ANDROIDSDL::initBackend() {
|
||||
// Create the backend custom managers
|
||||
|
@ -43,6 +44,38 @@ void OSystem_ANDROIDSDL::initBackend() {
|
|||
if (!ConfMan.hasKey("gfx_mode"))
|
||||
ConfMan.set("gfx_mode", "2x");
|
||||
|
||||
if (!ConfMan.hasKey("touchpad_mouse_mode")) {
|
||||
const bool enable = (SDL_ANDROID_GetMouseEmulationMode() == 0) ? false : true;
|
||||
ConfMan.setBool("touchpad_mouse_mode", enable);
|
||||
} else {
|
||||
touchpadMode(ConfMan.getBool("touchpad_mouse_mode"));
|
||||
}
|
||||
|
||||
// Call parent implementation of this method
|
||||
OSystem_POSIX::initBackend();
|
||||
}
|
||||
|
||||
void OSystem_ANDROIDSDL::touchpadMode(bool enable) {
|
||||
if (enable)
|
||||
switchToRelativeMouseMode();
|
||||
else
|
||||
switchToDirectMouseMode();
|
||||
}
|
||||
|
||||
void OSystem_ANDROIDSDL::switchToDirectMouseMode() {
|
||||
SDL_ANDROID_SetMouseEmulationMode(0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
|
||||
}
|
||||
|
||||
void OSystem_ANDROIDSDL::switchToRelativeMouseMode() {
|
||||
SDL_ANDROID_SetMouseEmulationMode(1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
|
||||
}
|
||||
|
||||
void OSystem_ANDROIDSDL::setFeatureState(Feature f, bool enable) {
|
||||
switch (f) {
|
||||
case kFeatureTouchpadMode:
|
||||
touchpadMode(enable);
|
||||
break;
|
||||
}
|
||||
|
||||
OSystem_POSIX::setFeatureState(f, enable);
|
||||
}
|
||||
|
|
|
@ -28,6 +28,10 @@
|
|||
class OSystem_ANDROIDSDL : public OSystem_POSIX {
|
||||
public:
|
||||
virtual void initBackend();
|
||||
virtual void setFeatureState(Feature f, bool enable);
|
||||
void touchpadMode(bool enable);
|
||||
void switchToDirectMouseMode();
|
||||
void switchToRelativeMouseMode();
|
||||
|
||||
#ifdef ENABLE_KEYMAPPER
|
||||
// FIXME: This just calls parent methods, is it needed?
|
||||
|
|
|
@ -337,6 +337,14 @@ public:
|
|||
* This feature has no associated state.
|
||||
*/
|
||||
kFeatureOpenUrl
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
/**
|
||||
* mouse emulation mode
|
||||
*/
|
||||
,
|
||||
kFeatureTouchpadMode
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -136,6 +136,10 @@ OptionsDialog::~OptionsDialog() {
|
|||
}
|
||||
|
||||
void OptionsDialog::init() {
|
||||
#ifdef ANDROIDSDL
|
||||
_enableAndroidSdlSettings = false;
|
||||
_touchpadCheckbox = 0;
|
||||
#endif
|
||||
_enableGraphicSettings = false;
|
||||
_gfxPopUp = 0;
|
||||
_gfxPopUpDesc = 0;
|
||||
|
@ -203,6 +207,14 @@ void OptionsDialog::build() {
|
|||
_guioptions = parseGameGUIOptions(_guioptionsString);
|
||||
}
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
// AndroidSDL options
|
||||
if (ConfMan.hasKey("touchpad_mouse_mode", _domain)) {
|
||||
bool touchpadState = ConfMan.getBool("touchpad_mouse_mode", _domain);
|
||||
_touchpadCheckbox->setState(touchpadState);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Graphic options
|
||||
if (_fullscreenCheckbox) {
|
||||
_gfxPopUp->setSelected(0);
|
||||
|
@ -380,6 +392,14 @@ void OptionsDialog::open() {
|
|||
}
|
||||
|
||||
void OptionsDialog::apply() {
|
||||
#ifdef ANDROIDSDL
|
||||
if (_enableAndroidSdlSettings) {
|
||||
if (ConfMan.getBool("touchpad_mouse_mode", _domain) != _touchpadCheckbox->getState()) {
|
||||
ConfMan.setBool("touchpad_mouse_mode", _touchpadCheckbox->getState(), _domain);
|
||||
g_system->setFeatureState(OSystem::kFeatureTouchpadMode, _touchpadCheckbox->getState());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// Graphic options
|
||||
bool graphicsModeChanged = false;
|
||||
if (_fullscreenCheckbox) {
|
||||
|
@ -673,6 +693,10 @@ void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
|
|||
}
|
||||
}
|
||||
|
||||
void OptionsDialog::setAndroidSdlSettingsState(bool enabled) {
|
||||
_enableAndroidSdlSettings = enabled;
|
||||
}
|
||||
|
||||
void OptionsDialog::setGraphicSettingsState(bool enabled) {
|
||||
_enableGraphicSettings = enabled;
|
||||
|
||||
|
@ -799,6 +823,15 @@ void OptionsDialog::setSubtitleSettingsState(bool enabled) {
|
|||
_subSpeedLabel->setEnabled(ena);
|
||||
}
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
void OptionsDialog::addAndroidSdlControls(GuiObject *boss, const Common::String &prefix) {
|
||||
// Touchpad Mouse mode
|
||||
_touchpadCheckbox = new CheckboxWidget(boss, prefix + "grTouchpadCheckbox", _("Touchpad mouse mode"));
|
||||
|
||||
_enableAndroidSdlSettings = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
void OptionsDialog::addGraphicControls(GuiObject *boss, const Common::String &prefix) {
|
||||
const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes();
|
||||
Common::String context;
|
||||
|
@ -1226,6 +1259,14 @@ void GlobalOptionsDialog::build() {
|
|||
// The tab widget
|
||||
TabWidget *tab = new TabWidget(this, "GlobalOptions.TabWidget");
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
//
|
||||
// The control tab only for Android SDL platform
|
||||
//
|
||||
tab->addTab(_("Control"));
|
||||
addAndroidSdlControls(tab, "GlobalOptions_AndroidSdl.");
|
||||
#endif
|
||||
|
||||
//
|
||||
// 1) The graphics tab
|
||||
//
|
||||
|
|
|
@ -86,6 +86,9 @@ protected:
|
|||
virtual void clean();
|
||||
void rebuild();
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
void addAndroidSdlControls(GuiObject *boss, const Common::String &prefix);
|
||||
#endif
|
||||
void addGraphicControls(GuiObject *boss, const Common::String &prefix);
|
||||
void addAudioControls(GuiObject *boss, const Common::String &prefix);
|
||||
void addMIDIControls(GuiObject *boss, const Common::String &prefix);
|
||||
|
@ -96,6 +99,9 @@ protected:
|
|||
void addSubtitleControls(GuiObject *boss, const Common::String &prefix, int maxSliderVal = 255);
|
||||
void addEngineControls(GuiObject *boss, const Common::String &prefix, const ExtraGuiOptions &engineOptions);
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
void setAndroidSdlSettingsState(bool enabled);
|
||||
#endif
|
||||
void setGraphicSettingsState(bool enabled);
|
||||
void setAudioSettingsState(bool enabled);
|
||||
void setMIDISettingsState(bool enabled);
|
||||
|
@ -112,6 +118,16 @@ protected:
|
|||
int _pathsTabId;
|
||||
|
||||
private:
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
//
|
||||
// AndroidSDL controls
|
||||
//
|
||||
bool _enableAndroidSdlSettings;
|
||||
|
||||
CheckboxWidget *_touchpadCheckbox;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Graphics controls
|
||||
//
|
||||
|
|
Binary file not shown.
|
@ -238,6 +238,14 @@
|
|||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_AndroidSdl' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<widget name = 'grTouchpadCheckbox'
|
||||
type = 'Checkbox'
|
||||
/>
|
||||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
|
||||
|
|
|
@ -235,6 +235,14 @@
|
|||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_AndroidSdl' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<widget name = 'grTouchpadCheckbox'
|
||||
type = 'Checkbox'
|
||||
/>
|
||||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
|
||||
|
|
Binary file not shown.
|
@ -252,6 +252,14 @@
|
|||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_AndroidSdl' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<widget name = 'grTouchpadCheckbox'
|
||||
type = 'Checkbox'
|
||||
/>
|
||||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '10' center = 'true'>
|
||||
|
|
|
@ -233,6 +233,14 @@
|
|||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_AndroidSdl' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<widget name = 'grTouchpadCheckbox'
|
||||
type = 'Checkbox'
|
||||
/>
|
||||
</layout>
|
||||
</dialog>
|
||||
|
||||
<dialog name = 'GlobalOptions_Graphics' overlays = 'Dialog.GlobalOptions.TabWidget'>
|
||||
<layout type = 'vertical' padding = '16, 16, 16, 16' spacing = '8'>
|
||||
<layout type = 'horizontal' padding = '0, 0, 0, 0' spacing = '6' center = 'true'>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue