diff --git a/res/drawable/ic_settings_24dp.xml b/res/drawable/ic_settings_24dp.xml
new file mode 100644
index 00000000..b9dc2e1a
--- /dev/null
+++ b/res/drawable/ic_settings_24dp.xml
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/res/drawable/left_click_48dp.xml b/res/drawable/left_click_48dp.xml
new file mode 100644
index 00000000..32a78f1b
--- /dev/null
+++ b/res/drawable/left_click_48dp.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/res/drawable/right_click_48dp.xml b/res/drawable/right_click_48dp.xml
new file mode 100644
index 00000000..23afa0d7
--- /dev/null
+++ b/res/drawable/right_click_48dp.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/res/layout/activity_mousepad.xml b/res/layout/activity_mousepad.xml
index 4f7da7dc..a0765e0b 100644
--- a/res/layout/activity_mousepad.xml
+++ b/res/layout/activity_mousepad.xml
@@ -18,15 +18,6 @@
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
-
-
+ android:layout_height="wrap_content"
+ android:layout_above="@id/mouse_buttons"/>
@@ -52,6 +45,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="3"
+ app:icon="@drawable/left_click_48dp"
style="@style/KdeConnectButton.IconButton" />
-
\ No newline at end of file
diff --git a/res/menu/menu_mousepad.xml b/res/menu/menu_mousepad.xml
index e89e5492..ca06c05a 100644
--- a/res/menu/menu_mousepad.xml
+++ b/res/menu/menu_mousepad.xml
@@ -6,12 +6,31 @@
android:id="@+id/menu_show_keyboard"
android:icon="@drawable/ic_action_keyboard_24dp"
android:title="@string/show_keyboard"
+ kdeconnect:iconTint="?colorOnBackground"
kdeconnect:showAsAction="ifRoom" />
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e1c840e6..8f1755f2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -64,6 +64,7 @@
Set two finger tap action
Set three finger tap action
Set touchpad sensitivity
+ Show mouse buttons
Set pointer acceleration
mousepad_single_tap_key
mousepad_double_tap_key
@@ -73,6 +74,7 @@
Reverse Scrolling Direction
mousepad_scroll_direction
gyro_mouse_enabled
+ mouse_buttons_enabled
- Left click
- Right click
diff --git a/res/xml/mousepadplugin_preferences.xml b/res/xml/mousepadplugin_preferences.xml
index 1b575afb..e31f67d9 100644
--- a/res/xml/mousepadplugin_preferences.xml
+++ b/res/xml/mousepadplugin_preferences.xml
@@ -63,6 +63,12 @@
android:key="@string/gyro_mouse_enabled"
android:title="Gyro mouse" />
+
+
{
- setAllowGyro(checked);
- prefs.edit().putBoolean(getString(R.string.gyro_mouse_enabled), checked).apply();
- });
- } else {
- gyroSwitch.setVisibility(View.GONE);
+ if (mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null
+ && prefs.getBoolean(getString(R.string.gyro_mouse_enabled), false)) {
+ allowGyro = true;
}
String singleTapSetting = prefs.getString(getString(R.string.mousepad_single_tap_key),
getString(R.string.mousepad_default_single));
@@ -194,10 +188,6 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
return;
}
- findViewById(R.id.mouse_click_left).setOnClickListener(v -> sendLeftClick());
- findViewById(R.id.mouse_click_middle).setOnClickListener(v -> sendMiddleClick());
- findViewById(R.id.mouse_click_right).setOnClickListener(v -> sendRightClick());
-
final View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
@@ -219,6 +209,17 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME);
gyroEnabled = true;
}
+
+ if (prefs.getBoolean(getString(R.string.mousepad_mouse_buttons_enabled_pref), true)) {
+ findViewById(R.id.mouse_buttons).setVisibility(View.VISIBLE);
+ findViewById(R.id.mouse_click_left).setOnClickListener(v -> sendLeftClick());
+ findViewById(R.id.mouse_click_middle).setOnClickListener(v -> sendMiddleClick());
+ findViewById(R.id.mouse_click_right).setOnClickListener(v -> sendRightClick());
+ } else {
+ findViewById(R.id.mouse_buttons).setVisibility(View.GONE);
+ }
+ invalidateMenu();
+
super.onResume();
}
@@ -243,13 +244,31 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_mousepad, menu);
+
+ boolean mouseButtonsEnabled = prefs
+ .getBoolean(getString(R.string.mousepad_mouse_buttons_enabled_pref), true);
+ menu.findItem(R.id.menu_right_click).setVisible(!mouseButtonsEnabled);
+ menu.findItem(R.id.menu_middle_click).setVisible(!mouseButtonsEnabled);
+
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
- if (id == R.id.menu_show_keyboard) {
+ if (id == R.id.menu_right_click) {
+ sendRightClick();
+ return true;
+ } else if (id == R.id.menu_middle_click) {
+ sendMiddleClick();
+ return true;
+ } else if (id == R.id.menu_open_mousepad_settings) {
+ Intent intent = new Intent(this, PluginSettingsActivity.class)
+ .putExtra(PluginSettingsActivity.EXTRA_DEVICE_ID, deviceId)
+ .putExtra(PluginSettingsActivity.EXTRA_PLUGIN_KEY, MousePadPlugin.class.getSimpleName());
+ startActivity(intent);
+ return true;
+ } else if (id == R.id.menu_show_keyboard) {
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> {
if (plugin.isKeyboardEnabled()) {
showKeyboard();
@@ -481,16 +500,5 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
super.onBackPressed();
return true;
}
-
- private void setAllowGyro(Boolean enabled) {
- if (allowGyro == enabled) return;
- if (enabled) {
- mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME);
- } else {
- mSensorManager.unregisterListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE));
- }
- allowGyro = enabled;
- gyroEnabled = enabled;
- }
}