From 96c9293edc69c62497d254bd1bfdc7b76b5df016 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 2 Jan 2020 18:12:44 +0100 Subject: [PATCH] Rageshake: vibrate --- CHANGES.md | 1 + vector/src/main/AndroidManifest.xml | 1 + .../im/vector/riotx/core/hardware/vibrator.kt | 32 +++++++++++++++++++ .../features/navigation/DefaultNavigator.kt | 4 +-- .../riotx/features/navigation/Navigator.kt | 3 +- .../riotx/features/rageshake/RageShake.kt | 8 ++++- .../settings/VectorSettingsActivity.kt | 15 +++++++-- .../xml/vector_settings_developer_mode.xml | 4 +-- 8 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/core/hardware/vibrator.kt diff --git a/CHANGES.md b/CHANGES.md index 67b430e79b..adbba84260 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ Improvements 🙌: - Fix autocompletion issues and add support for rooms and groups - Introduce developer mode in the settings (#796) - Improve devices list screen + - Add settings for rageshake sensibility Other changes: - diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml index 124763916b..308ca60094 100644 --- a/vector/src/main/AndroidManifest.xml +++ b/vector/src/main/AndroidManifest.xml @@ -6,6 +6,7 @@ + = Build.VERSION_CODES.O) { + vibrator.vibrate(VibrationEffect.createOneShot(durationMillis, VibrationEffect.DEFAULT_AMPLITUDE)) + } else { + @Suppress("DEPRECATION") + vibrator.vibrate(durationMillis) + } +} diff --git a/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt b/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt index 08ff11217d..48422056b4 100644 --- a/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt +++ b/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt @@ -120,8 +120,8 @@ class DefaultNavigator @Inject constructor( context.startActivity(intent) } - override fun openSettings(context: Context) { - val intent = VectorSettingsActivity.getIntent(context) + override fun openSettings(context: Context, directAccess: Int) { + val intent = VectorSettingsActivity.getIntent(context, directAccess) context.startActivity(intent) } diff --git a/vector/src/main/java/im/vector/riotx/features/navigation/Navigator.kt b/vector/src/main/java/im/vector/riotx/features/navigation/Navigator.kt index 278c8fdba0..60045984c3 100644 --- a/vector/src/main/java/im/vector/riotx/features/navigation/Navigator.kt +++ b/vector/src/main/java/im/vector/riotx/features/navigation/Navigator.kt @@ -19,6 +19,7 @@ package im.vector.riotx.features.navigation import android.app.Activity import android.content.Context import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom +import im.vector.riotx.features.settings.VectorSettingsActivity import im.vector.riotx.features.share.SharedData interface Navigator { @@ -39,7 +40,7 @@ interface Navigator { fun openRoomsFiltering(context: Context) - fun openSettings(context: Context) + fun openSettings(context: Context, directAccess: Int = VectorSettingsActivity.EXTRA_DIRECT_ACCESS_ROOT) fun openDebug(context: Context) diff --git a/vector/src/main/java/im/vector/riotx/features/rageshake/RageShake.kt b/vector/src/main/java/im/vector/riotx/features/rageshake/RageShake.kt index bbd1090d98..6d5c780202 100644 --- a/vector/src/main/java/im/vector/riotx/features/rageshake/RageShake.kt +++ b/vector/src/main/java/im/vector/riotx/features/rageshake/RageShake.kt @@ -23,11 +23,15 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.squareup.seismic.ShakeDetector import im.vector.riotx.R +import im.vector.riotx.core.hardware.vibrate +import im.vector.riotx.features.navigation.Navigator import im.vector.riotx.features.settings.VectorPreferences +import im.vector.riotx.features.settings.VectorSettingsActivity import javax.inject.Inject class RageShake @Inject constructor(private val activity: AppCompatActivity, private val bugReporter: BugReporter, + private val navigator: Navigator, private val vectorPreferences: VectorPreferences) : ShakeDetector.Listener { private var shakeDetector: ShakeDetector? = null @@ -56,6 +60,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity, override fun hearShake() { val i = interceptor if (i != null) { + vibrate(activity) i.invoke() } else { if (dialogDisplayed) { @@ -63,6 +68,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity, return } + vibrate(activity) dialogDisplayed = true AlertDialog.Builder(activity) @@ -80,7 +86,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity, } private fun openSettings() { - // TODO + navigator.openSettings(activity, VectorSettingsActivity.EXTRA_DIRECT_ACCESS_DEVELOPER) } companion object { diff --git a/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsActivity.kt b/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsActivity.kt index 16484224af..810547f610 100755 --- a/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsActivity.kt @@ -54,7 +54,12 @@ class VectorSettingsActivity : VectorBaseActivity(), if (isFirstCreation()) { // display the fragment - replaceFragment(R.id.vector_settings_page, VectorSettingsRootFragment::class.java, null, FRAGMENT_TAG) + when (intent.getIntExtra(EXTRA_DIRECT_ACCESS, EXTRA_DIRECT_ACCESS_ROOT)) { + EXTRA_DIRECT_ACCESS_DEVELOPER -> + replaceFragment(R.id.vector_settings_page, VectorSettingsDeveloperModeFragment::class.java, null, FRAGMENT_TAG) + else -> + replaceFragment(R.id.vector_settings_page, VectorSettingsRootFragment::class.java, null, FRAGMENT_TAG) + } } supportFragmentManager.addOnBackStackChangedListener(this) @@ -111,7 +116,13 @@ class VectorSettingsActivity : VectorBaseActivity(), } companion object { - fun getIntent(context: Context) = Intent(context, VectorSettingsActivity::class.java) + fun getIntent(context: Context, directAccess: Int) = Intent(context, VectorSettingsActivity::class.java) + .apply { putExtra(EXTRA_DIRECT_ACCESS, directAccess) } + + private const val EXTRA_DIRECT_ACCESS = "EXTRA_DIRECT_ACCESS" + + const val EXTRA_DIRECT_ACCESS_ROOT = 0 + const val EXTRA_DIRECT_ACCESS_DEVELOPER = 1 private const val FRAGMENT_TAG = "VectorSettingsPreferencesFragment" } diff --git a/vector/src/main/res/xml/vector_settings_developer_mode.xml b/vector/src/main/res/xml/vector_settings_developer_mode.xml index 6cae5fad06..d3f960b31b 100644 --- a/vector/src/main/res/xml/vector_settings_developer_mode.xml +++ b/vector/src/main/res/xml/vector_settings_developer_mode.xml @@ -14,10 +14,10 @@ android:defaultValue="13" android:dependency="SETTINGS_USE_RAGE_SHAKE_KEY" android:key="SETTINGS_RAGE_SHAKE_DETECTION_THRESHOLD_KEY" - android:max="17" + android:max="15" android:summary="@string/settings_rageshake_detection_threshold_summary" android:title="@string/settings_rageshake_detection_threshold" - app:min="9" /> + app:min="11" />