Changeset View
Changeset View
Standalone View
Standalone View
src/org/kde/kdeconnect/Plugins/MousePadPlugin/MousePadActivity.java
Show All 39 Lines | |||||
40 | import org.kde.kdeconnect.UserInterface.ThemeUtil; | 40 | import org.kde.kdeconnect.UserInterface.ThemeUtil; | ||
41 | import org.kde.kdeconnect_tp.R; | 41 | import org.kde.kdeconnect_tp.R; | ||
42 | 42 | | |||
43 | public class MousePadActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener, MousePadGestureDetector.OnGestureListener { | 43 | public class MousePadActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener, MousePadGestureDetector.OnGestureListener { | ||
44 | String deviceId; | 44 | String deviceId; | ||
45 | 45 | | |||
46 | private final static float MinDistanceToSendScroll = 2.5f; // touch gesture scroll | 46 | private final static float MinDistanceToSendScroll = 2.5f; // touch gesture scroll | ||
47 | private final static float MinDistanceToSendGenericScroll = 0.1f; // real mouse scroll wheel event | 47 | private final static float MinDistanceToSendGenericScroll = 0.1f; // real mouse scroll wheel event | ||
48 | private final static float StandardDpi = 240.0f; // = hdpi | ||||
48 | 49 | | |||
49 | private float mPrevX; | 50 | private float mPrevX; | ||
50 | private float mPrevY; | 51 | private float mPrevY; | ||
51 | private float mCurrentX; | 52 | private float mCurrentX; | ||
52 | private float mCurrentY; | 53 | private float mCurrentY; | ||
53 | private float mCurrentSensitivity; | 54 | private float mCurrentSensitivity; | ||
55 | private float displayDpiMultiplier; | ||||
54 | private int scrollDirection = 1; | 56 | private int scrollDirection = 1; | ||
55 | 57 | | |||
56 | boolean isScrolling = false; | 58 | boolean isScrolling = false; | ||
57 | float accumulatedDistanceY = 0; | 59 | float accumulatedDistanceY = 0; | ||
58 | 60 | | |||
59 | private GestureDetector mDetector; | 61 | private GestureDetector mDetector; | ||
60 | private MousePadGestureDetector mMousePadGestureDetector; | 62 | private MousePadGestureDetector mMousePadGestureDetector; | ||
61 | 63 | | |||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | 84 | protected void onCreate(Bundle savedInstanceState) { | |||
107 | String tripleTapSetting = prefs.getString(getString(R.string.mousepad_triple_tap_key), | 109 | String tripleTapSetting = prefs.getString(getString(R.string.mousepad_triple_tap_key), | ||
108 | getString(R.string.mousepad_default_triple)); | 110 | getString(R.string.mousepad_default_triple)); | ||
109 | String sensitivitySetting = prefs.getString(getString(R.string.mousepad_sensitivity_key), | 111 | String sensitivitySetting = prefs.getString(getString(R.string.mousepad_sensitivity_key), | ||
110 | getString(R.string.mousepad_default_sensitivity)); | 112 | getString(R.string.mousepad_default_sensitivity)); | ||
111 | 113 | | |||
112 | doubleTapAction = ClickType.fromString(doubleTapSetting); | 114 | doubleTapAction = ClickType.fromString(doubleTapSetting); | ||
113 | tripleTapAction = ClickType.fromString(tripleTapSetting); | 115 | tripleTapAction = ClickType.fromString(tripleTapSetting); | ||
114 | 116 | | |||
117 | //Technically xdpi and ydpi should be handled separately, | ||||
118 | //but since ydpi is usually almost equal to xdpi, only xdpi is used for the multiplier. | ||||
119 | displayDpiMultiplier = StandardDpi / getResources().getDisplayMetrics().xdpi; | ||||
120 | | ||||
115 | switch (sensitivitySetting) { | 121 | switch (sensitivitySetting) { | ||
116 | case "slowest": | 122 | case "slowest": | ||
117 | mCurrentSensitivity = 0.2f; | 123 | mCurrentSensitivity = 0.2f; | ||
118 | break; | 124 | break; | ||
119 | case "aboveSlowest": | 125 | case "aboveSlowest": | ||
120 | mCurrentSensitivity = 0.5f; | 126 | mCurrentSensitivity = 0.5f; | ||
121 | break; | 127 | break; | ||
122 | case "default": | 128 | case "default": | ||
▲ Show 20 Lines • Show All 87 Lines • ▼ Show 20 Line(s) | 213 | case MotionEvent.ACTION_DOWN: | |||
210 | break; | 216 | break; | ||
211 | case MotionEvent.ACTION_MOVE: | 217 | case MotionEvent.ACTION_MOVE: | ||
212 | mCurrentX = event.getX(); | 218 | mCurrentX = event.getX(); | ||
213 | mCurrentY = event.getY(); | 219 | mCurrentY = event.getY(); | ||
214 | BackgroundService.RunCommand(this, service -> { | 220 | BackgroundService.RunCommand(this, service -> { | ||
215 | Device device = service.getDevice(deviceId); | 221 | Device device = service.getDevice(deviceId); | ||
216 | MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class); | 222 | MousePadPlugin mousePadPlugin = device.getPlugin(MousePadPlugin.class); | ||
217 | if (mousePadPlugin == null) return; | 223 | if (mousePadPlugin == null) return; | ||
218 | mousePadPlugin.sendMouseDelta(mCurrentX - mPrevX, mCurrentY - mPrevY, mCurrentSensitivity); | 224 | mousePadPlugin.sendMouseDelta( | ||
225 | (mCurrentX - mPrevX) * displayDpiMultiplier, | ||||
226 | (mCurrentY - mPrevY) * displayDpiMultiplier, | ||||
227 | mCurrentSensitivity); | ||||
219 | mPrevX = mCurrentX; | 228 | mPrevX = mCurrentX; | ||
220 | mPrevY = mCurrentY; | 229 | mPrevY = mCurrentY; | ||
221 | }); | 230 | }); | ||
222 | break; | 231 | break; | ||
223 | } | 232 | } | ||
224 | return true; | 233 | return true; | ||
225 | } | 234 | } | ||
226 | 235 | | |||
▲ Show 20 Lines • Show All 181 Lines • Show Last 20 Lines |