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; - } }