Thanks for sharing your code.
I also need to use a rotary encoder to navigate in a menu and this solution seems fine, except that I'm not sure if it can let the user change values of integer, float and boolean variables.
You use a nice "slider" trick to change the speed, is it possible to let the user change the value of a variable with predetermined minimum, maximum and step parameters?