diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index b86f1f983..73564056a 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -509,16 +509,6 @@ void FurnaceGUI::drawMobileControls() { doAction(GUI_ACTION_SAVE_AS); } - if (ImGui::Button("1.1+ .dmf")) { - mobileMenuOpen=false; - openFileDialog(GUI_FILE_SAVE_DMF); - } - ImGui::SameLine(); - if (ImGui::Button("Legacy .dmf")) { - mobileMenuOpen=false; - openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); - } - ImGui::SameLine(); if (ImGui::Button("Export")) { doAction(GUI_ACTION_EXPORT); } diff --git a/src/gui/gui.h b/src/gui/gui.h index f0d85190a..ee1412cdf 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -56,7 +56,7 @@ // for now #define NOTIFY_LONG_HOLD \ if (vibrator && vibratorAvailable) { \ - if (SDL_HapticRumblePlay(vibrator,0.5f,20)!=0) { \ + if (SDL_HapticRumblePlay(vibrator,settings.vibrationStrength,settings.vibrationLength)!=0) { \ logV("could not vibrate: %s!",SDL_GetError()); \ } \ } else { \ @@ -1844,6 +1844,8 @@ class FurnaceGUI { int frameRateLimit; int displayRenderTime; unsigned int maxUndoSteps; + float vibrationStrength; + int vibrationLength; String mainFontPath; String headFontPath; String patFontPath; @@ -2076,6 +2078,8 @@ class FurnaceGUI { frameRateLimit(60), displayRenderTime(0), maxUndoSteps(100), + vibrationStrength(0.5f), + vibrationLength(100), mainFontPath(""), headFontPath(""), patFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index b63c29c0e..42e052d44 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -563,6 +563,24 @@ void FurnaceGUI::drawSettings() { } ImGui::Unindent(); +#ifdef IS_MOBILE + // SUBSECTION VIBRATION + CONFIG_SUBSECTION("Vibration"); + + ImGui::Indent(); + if (ImGui::SliderFloat("Strength",&settings.vibrationStrength,0.0f,1.0f)) { + if (settings.vibrationStrength<0.0f) settings.vibrationStrength=0.0f; + if (settings.vibrationStrength>1.0f) settings.vibrationStrength=1.0f; + settingsChanged=true; + } + + if (ImGui::SliderInt("Length",&settings.vibrationLength,10,500)) { + if (settings.vibrationLength<10) settings.vibrationLength=10; + if (settings.vibrationLength>500) settings.vibrationLength=500; + settingsChanged=true; + ImGui::Unindent(); +#endif + // SUBSECTION FILE CONFIG_SUBSECTION("File"); @@ -4049,6 +4067,9 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) { settings.newSongBehavior=conf.getInt("newSongBehavior",0); settings.playOnLoad=conf.getInt("playOnLoad",0); settings.centerPopup=conf.getInt("centerPopup",1); + + settings.vibrationStrength=conf.getFloat("vibrationStrength",0.5f); + settings.vibrationLength=conf.getInt("vibrationLength",100); } if (groups&GUI_SETTINGS_AUDIO) { @@ -4520,6 +4541,8 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) { clampSetting(settings.vsync,0,4); clampSetting(settings.frameRateLimit,0,1000); clampSetting(settings.displayRenderTime,0,1); + clampSetting(settings.vibrationStrength,0.0f,1.0f); + clampSetting(settings.vibrationLength,10,500); if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; @@ -4582,6 +4605,9 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) { conf.set("newSongBehavior",settings.newSongBehavior); conf.set("playOnLoad",settings.playOnLoad); conf.set("centerPopup",settings.centerPopup); + + conf.set("vibrationStrength",settings.vibrationStrength); + conf.set("vibrationLength",settings.vibrationLength); } // audio diff --git a/src/gui/xyOsc.cpp b/src/gui/xyOsc.cpp index 930ed5d60..5a727127d 100644 --- a/src/gui/xyOsc.cpp +++ b/src/gui/xyOsc.cpp @@ -222,6 +222,10 @@ void FurnaceGUI::drawXYOsc() { if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { xyOscOptions=true; } + if (ImGui::IsItemHovered() && CHECK_LONG_HOLD) { + NOTIFY_LONG_HOLD; + xyOscOptions=true; + } } } if (noPadding) {