mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-22 09:58:08 +00:00
Update MousePadActivity to support doubletap drag
This MR is a continuation of !439 , which changes the default behavior of the remote mouse plugin's drag and drop trigger to be a double-tap to drag, and adds a new SwitchPreference that toggles between the old (hold to drag) and new behavior.
This commit is contained in:
parent
ab1b1f7ecc
commit
5f18cb571d
@ -85,6 +85,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
|||||||
<string name="mousepad_scroll_sensitivity_title">Scroll sensitivity</string>
|
<string name="mousepad_scroll_sensitivity_title">Scroll sensitivity</string>
|
||||||
<string name="gyro_mouse_enabled" translatable="false">gyro_mouse_enabled</string>
|
<string name="gyro_mouse_enabled" translatable="false">gyro_mouse_enabled</string>
|
||||||
<string name="mousepad_mouse_buttons_enabled_pref" translatable="false">mouse_buttons_enabled</string>
|
<string name="mousepad_mouse_buttons_enabled_pref" translatable="false">mouse_buttons_enabled</string>
|
||||||
|
<string name="mousepad_doubletap_drag_enabled_pref" translatable="false">doubletap_drag_enabled</string>
|
||||||
<string name="gyro_mouse_enabled_title">Enable gyroscope mouse</string>
|
<string name="gyro_mouse_enabled_title">Enable gyroscope mouse</string>
|
||||||
<string name="gyro_mouse_sensitivity_title">Gyroscope sensitivity</string>
|
<string name="gyro_mouse_sensitivity_title">Gyroscope sensitivity</string>
|
||||||
<string name="gyro_mouse_sensitivity" translatable="false">gyro_mouse_sensitivity</string>
|
<string name="gyro_mouse_sensitivity" translatable="false">gyro_mouse_sensitivity</string>
|
||||||
@ -513,6 +514,8 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
|||||||
<string name="send_compose">Send</string>
|
<string name="send_compose">Send</string>
|
||||||
<string name="compose_send_title">Compose send</string>
|
<string name="compose_send_title">Compose send</string>
|
||||||
<string name="open_compose_send">Compose text</string>
|
<string name="open_compose_send">Compose text</string>
|
||||||
|
<string name="double_tap_to_drag">Double tap to drag</string>
|
||||||
|
<string name="hold_to_drag">Hold to drag</string>
|
||||||
|
|
||||||
<string name="about_kde_about"><![CDATA[
|
<string name="about_kde_about"><![CDATA[
|
||||||
<h1>About</h1>
|
<h1>About</h1>
|
||||||
|
@ -90,6 +90,15 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
|||||||
android:key="@string/mousepad_mouse_buttons_enabled_pref"
|
android:key="@string/mousepad_mouse_buttons_enabled_pref"
|
||||||
android:title="@string/mousepad_mouse_buttons_title" />
|
android:title="@string/mousepad_mouse_buttons_title" />
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
android:id="@+id/mousepad_double_tap_drag_enabled_pref"
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="@string/mousepad_doubletap_drag_enabled_pref"
|
||||||
|
android:title="Drag and drop behavior"
|
||||||
|
android:summaryOn="@string/double_tap_to_drag"
|
||||||
|
android:summaryOff="@string/hold_to_drag"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
<org.kde.kdeconnect.Helpers.LongSummaryPreferenceCategory
|
<org.kde.kdeconnect.Helpers.LongSummaryPreferenceCategory
|
||||||
android:key="@string/sendkeystrokes_pref_category"
|
android:key="@string/sendkeystrokes_pref_category"
|
||||||
|
@ -13,6 +13,7 @@ import android.hardware.SensorEvent;
|
|||||||
import android.hardware.SensorEventListener;
|
import android.hardware.SensorEventListener;
|
||||||
import android.hardware.SensorManager;
|
import android.hardware.SensorManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.GestureDetector;
|
import android.view.GestureDetector;
|
||||||
import android.view.HapticFeedbackConstants;
|
import android.view.HapticFeedbackConstants;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@ -55,6 +56,7 @@ public class MousePadActivity
|
|||||||
private double scrollCoefficient = 1.0;
|
private double scrollCoefficient = 1.0;
|
||||||
private boolean allowGyro = false;
|
private boolean allowGyro = false;
|
||||||
private boolean gyroEnabled = false;
|
private boolean gyroEnabled = false;
|
||||||
|
private boolean doubleTapDragEnabled = false;
|
||||||
private int gyroscopeSensitivity = 100;
|
private int gyroscopeSensitivity = 100;
|
||||||
private boolean isScrolling = false;
|
private boolean isScrolling = false;
|
||||||
private float accumulatedDistanceY = 0;
|
private float accumulatedDistanceY = 0;
|
||||||
@ -376,14 +378,16 @@ public class MousePadActivity
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLongPress(MotionEvent e) {
|
public void onLongPress(MotionEvent e) {
|
||||||
getWindow().getDecorView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
|
if (!doubleTapDragEnabled) {
|
||||||
MousePadPlugin plugin = KdeConnect.getInstance().getDevicePlugin(deviceId, MousePadPlugin.class);
|
getWindow().getDecorView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
|
||||||
if (plugin == null) {
|
MousePadPlugin plugin = KdeConnect.getInstance().getDevicePlugin(deviceId, MousePadPlugin.class);
|
||||||
finish();
|
if (plugin == null) {
|
||||||
return;
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
plugin.sendSingleHold();
|
||||||
|
dragging = true;
|
||||||
}
|
}
|
||||||
plugin.sendSingleHold();
|
|
||||||
dragging = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -415,13 +419,18 @@ public class MousePadActivity
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
plugin.sendDoubleClick();
|
if (doubleTapDragEnabled) {
|
||||||
|
plugin.sendSingleHold();
|
||||||
|
dragging = true;
|
||||||
|
} else {
|
||||||
|
plugin.sendDoubleClick();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onDoubleTapEvent(MotionEvent e) {
|
public boolean onDoubleTapEvent(MotionEvent e) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -578,6 +587,8 @@ public class MousePadActivity
|
|||||||
findViewById(R.id.mouse_buttons).setVisibility(View.GONE);
|
findViewById(R.id.mouse_buttons).setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doubleTapDragEnabled = prefs.getBoolean(getString(R.string.mousepad_doubletap_drag_enabled_pref), true);
|
||||||
|
|
||||||
prefsApplied = true;
|
prefsApplied = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user