From 7b5caf5007fef297e6efb945fe82d067c9c61ed2 Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Thu, 18 May 2023 15:09:54 +0530 Subject: [PATCH 1/6] fixed deprecated onBackPressed Issue-#2961 Signed-off-by: Andy Scherzinger --- app/build.gradle | 2 +- .../activities/FullScreenImageActivity.kt | 11 +++++++- .../activities/FullScreenMediaActivity.kt | 10 ++++++- .../FullScreenTextViewerActivity.kt | 10 ++++++- .../nextcloud/talk/activities/MainActivity.kt | 10 ++++++- .../talk/activities/TakePhotoActivity.java | 27 ++++++++++-------- .../talk/contacts/ContactsActivity.kt | 9 +++++- .../ConversationInfoActivity.kt | 12 +++++++- .../ConversationInfoEditActivity.kt | 11 +++++++- .../ConversationsListActivity.kt | 28 ++++++++++++++++--- .../talk/location/GeocodingActivity.kt | 9 +++++- .../talk/location/LocationPickerActivity.kt | 2 ++ .../messagesearch/MessageSearchActivity.kt | 2 ++ .../nextcloud/talk/profile/ProfileActivity.kt | 12 +++++++- .../activities/RemoteFileBrowserActivity.kt | 15 ++++++++-- .../talk/settings/SettingsActivity.kt | 11 +++++++- .../activities/SharedItemsActivity.kt | 12 +++++++- 17 files changed, 163 insertions(+), 30 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e6dde6ee4..f734122f9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -301,7 +301,7 @@ dependencies { gplayImplementation 'com.google.android.gms:play-services-base:18.2.0' gplayImplementation "com.google.firebase:firebase-messaging:23.1.2" - // implementation 'androidx.activity:activity-ktx:1.4.0' + implementation 'androidx.activity:activity-ktx:1.6.0-rc02' implementation 'com.github.nextcloud.android-common:ui:0.10.0' diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt index 5bdd38f25..7d44b3ea7 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt @@ -31,6 +31,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import com.nextcloud.talk.BuildConfig @@ -43,6 +44,13 @@ import java.io.File class FullScreenImageActivity : AppCompatActivity() { lateinit var binding: ActivityFullScreenImageBinding + + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + private lateinit var path: String private var showFullscreen = false @@ -53,7 +61,8 @@ class FullScreenImageActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - onBackPressed() + // onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) true } else if (item.itemId == R.id.share) { val shareUri = FileProvider.getUriForFile( diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt index 2a076065d..d20f3b545 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt @@ -28,6 +28,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.view.WindowManager +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import autodagger.AutoInjector @@ -46,6 +47,12 @@ import java.io.File class FullScreenMediaActivity : AppCompatActivity(), Player.Listener { lateinit var binding: ActivityFullScreenMediaBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + private lateinit var path: String private lateinit var player: SimpleExoPlayer @@ -56,7 +63,8 @@ class FullScreenMediaActivity : AppCompatActivity(), Player.Listener { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - onBackPressed() + // onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) true } else if (item.itemId == R.id.share) { val shareUri = FileProvider.getUriForFile( diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt index e8e7375f8..81ffff5b6 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt @@ -26,6 +26,7 @@ import android.content.Intent import android.os.Bundle import android.view.Menu import android.view.MenuItem +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import androidx.core.content.res.ResourcesCompat @@ -45,6 +46,12 @@ import javax.inject.Inject class FullScreenTextViewerActivity : AppCompatActivity() { lateinit var binding: ActivityFullScreenTextBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + @Inject lateinit var viewThemeUtils: ViewThemeUtils @@ -57,7 +64,8 @@ class FullScreenTextViewerActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - onBackPressed() + // onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) true } else if (item.itemId == R.id.share) { val shareUri = FileProvider.getUriForFile( diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 151f11180..489303ffd 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -30,6 +30,7 @@ import android.os.Bundle import android.provider.ContactsContract import android.text.TextUtils import android.util.Log +import androidx.activity.OnBackPressedCallback import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner @@ -74,6 +75,12 @@ import javax.inject.Inject class MainActivity : BaseActivity(), ActionBarProvider { lateinit var binding: ActivityMainBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + @Inject lateinit var ncApi: NcApi @@ -355,7 +362,8 @@ class MainActivity : BaseActivity(), ActionBarProvider { override fun onBackPressed() { if (!router!!.handleBack()) { - super.onBackPressed() + // super.onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } } diff --git a/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java b/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java index 3e8c6e52d..6a6f9c7a2 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java @@ -56,6 +56,7 @@ import java.util.concurrent.ExecutionException; import javax.inject.Inject; +import androidx.activity.OnBackPressedCallback; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.OptIn; @@ -76,7 +77,6 @@ import static com.nextcloud.talk.utils.Mimetype.IMAGE_JPEG; @AutoInjector(NextcloudTalkApplication.class) public class TakePhotoActivity extends AppCompatActivity { - private static final String TAG = TakePhotoActivity.class.getSimpleName(); private static final float MAX_SCALE = 6.0f; @@ -223,20 +223,23 @@ public class TakePhotoActivity extends AppCompatActivity { }, ContextCompat.getMainExecutor(this)); } - @Override - public void onBackPressed() { - Uri uri = (Uri) binding.photoPreview.getTag(); + private OnBackPressedCallback callback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + Uri uri = (Uri) binding.photoPreview.getTag(); - if (uri != null) { - File photoFile = new File(uri.getPath()); - if (!photoFile.delete()) { - Log.w(TAG, "Error deleting temp camera image"); + if (uri != null) { + File photoFile = new File(uri.getPath()); + if (!photoFile.delete()) { + Log.w(TAG, "Error deleting temp camera image"); + } + binding.photoPreview.setTag(null); } - binding.photoPreview.setTag(null); - } - super.onBackPressed(); - } + finish(); + } + }; + private void showCameraElements() { binding.send.setVisibility(View.GONE); diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt index b26ba20df..916d355ee 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt @@ -36,6 +36,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.view.inputmethod.EditorInfo +import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.core.content.res.ResourcesCompat import androidx.core.view.MenuItemCompat @@ -92,6 +93,12 @@ class ContactsActivity : FlexibleAdapter.OnItemClickListener { private lateinit var binding: ControllerContactsRvBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + @Inject lateinit var userManager: UserManager @@ -188,7 +195,7 @@ class ContactsActivity : private fun setupActionBar() { setSupportActionBar(binding.contactsToolbar) binding.contactsToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index de1cf8918..7c30d45d7 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -5,10 +5,12 @@ * @author Andy Scherzinger * @author Tim Krüger * @author Marcel Hibbe + * @author Ezhil Shanmugham * Copyright (C) 2022-2023 Marcel Hibbe (dev@mhibbe.de) * Copyright (C) 2021-2022 Tim Krüger * Copyright (C) 2021 Andy Scherzinger (info@andy-scherzinger.de) * Copyright (C) 2017-2018 Mario Danic + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,6 +41,7 @@ import android.view.View import android.view.View.GONE import android.view.View.VISIBLE import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.SwitchCompat import androidx.work.Data @@ -107,6 +110,13 @@ class ConversationInfoActivity : private lateinit var binding: ActivityConversationInfoBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + + } + @Inject lateinit var ncApi: NcApi @@ -193,7 +203,7 @@ class ConversationInfoActivity : private fun setupActionBar() { setSupportActionBar(binding.conversationInfoToolbar) binding.conversationInfoToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index ca836c839..980274d3d 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -2,7 +2,9 @@ * Nextcloud Talk application * * @author Marcel Hibbe + * @author Ezhil Shanmugham * Copyright (C) 2023 Marcel Hibbe (dev@mhibbe.de) + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +32,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.core.net.toFile import androidx.core.view.ViewCompat import autodagger.AutoInjector @@ -69,6 +72,12 @@ class ConversationInfoEditActivity : private lateinit var binding: ActivityConversationInfoEditBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + @Inject lateinit var ncApi: NcApi @@ -149,7 +158,7 @@ class ConversationInfoEditActivity : private fun setupActionBar() { setSupportActionBar(binding.conversationInfoEditToolbar) binding.conversationInfoEditToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index ab137f1e1..cc25dd361 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -5,10 +5,12 @@ * @author Andy Scherzinger * @author Marcel Hibbe * @author Mario Danic + * @author Ezhil Shanmugham * Copyright (C) 2022 Álvaro Brey * Copyright (C) 2022 Andy Scherzinger (info@andy-scherzinger.de) * Copyright (C) 2022 Marcel Hibbe (dev@mhibbe.de) * Copyright (C) 2017-2020 Mario Danic (mario@lovelyhq.com) + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,6 +49,7 @@ import android.view.View import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat @@ -143,6 +146,12 @@ class ConversationsListActivity : private lateinit var binding: ControllerConversationsRvBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + @Inject lateinit var userManager: UserManager @@ -244,7 +253,7 @@ class ConversationsListActivity : private fun setupActionBar() { setSupportActionBar(binding.conversationListToolbar) binding.conversationListToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) @@ -1358,13 +1367,24 @@ class ConversationsListActivity : showErrorDialog() } - override fun onBackPressed() { - super.onBackPressed() - // TODO: replace this when conductor is removed. For now it avoids to load the MainActiviy which has no UI. + override fun onBackPressed() { + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + + onBackPressedDispatcher.addCallback(this, callback) + + // TODO: replace this when conductor is removed. For now it avoids loading the MainActivity which has no UI. + callback.isEnabled = true + callback.handleOnBackPressed() + finishAffinity() } + companion object { const val TAG = "ConvListController" const val UNREAD_BUBBLE_DELAY = 2500 diff --git a/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt b/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt index 0f43ecad0..c14a63c6a 100644 --- a/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt @@ -33,6 +33,7 @@ import android.view.MenuItem import android.view.inputmethod.EditorInfo import android.widget.AdapterView import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat import androidx.preference.PreferenceManager @@ -78,6 +79,12 @@ class GeocodingActivity : lateinit var adapter: GeocodingAdapter private var geocodingResults: List
= ArrayList() + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) @@ -123,7 +130,7 @@ class GeocodingActivity : private fun setupActionBar() { setSupportActionBar(binding.geocodingToolbar) binding.geocodingToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt index 48d4ced50..5033ff2e3 100644 --- a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt @@ -2,7 +2,9 @@ * Nextcloud Talk application * * @author Marcel Hibbe + * @author Ezhil Shanmugham * Copyright (C) 2021 Marcel Hibbe + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt index 0d1db5fa6..084fa322a 100644 --- a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt @@ -2,8 +2,10 @@ * Nextcloud Talk application * * @author Álvaro Brey + * @author Ezhil Shanmugham * Copyright (C) 2022 Álvaro Brey * Copyright (C) 2022 Nextcloud GmbH + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt index 01eab3bd7..1d46d8997 100644 --- a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt @@ -4,9 +4,11 @@ * @author Tobias Kaminsky * @author Andy Scherzinger * @author Tim Krüger + * @author Ezhil Shanmugham * Copyright (C) 2022 Tim Krüger * Copyright (C) 2022 Andy Scherzinger * Copyright (C) 2021 Tobias Kaminsky + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,6 +41,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat import androidx.core.net.toFile @@ -86,6 +89,13 @@ import javax.inject.Inject class ProfileActivity : BaseActivity() { private lateinit var binding: ActivityProfileBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + + } + @Inject lateinit var ncApi: NcApi @@ -185,7 +195,7 @@ class ProfileActivity : BaseActivity() { private fun setupActionBar() { setSupportActionBar(binding.profileToolbar) binding.profileToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt index 688845917..ff4da52d7 100644 --- a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt @@ -3,8 +3,10 @@ * * @author Andy Scherzinger * @author Álvaro Brey + * @author Ezhil Shanmugham * Copyright (C) 2022 Andy Scherzinger * Copyright (C) 2022 Álvaro Brey + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +32,7 @@ import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.DialogFragment @@ -192,10 +195,18 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe } override fun onBackPressed() { - setResult(Activity.RESULT_CANCELED) - super.onBackPressed() + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + setResult(Activity.RESULT_CANCELED) + finish() + } + } + + onBackPressedDispatcher.addCallback(this, callback) + callback.handleOnBackPressed() } + override fun onResume() { super.onResume() refreshCurrentPath() diff --git a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt index c27e19d6c..8c3db9dfd 100644 --- a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt @@ -4,9 +4,11 @@ * @author Andy Scherzinger * @author Mario Danic * @author Tim Krüger + * @author Ezhil Shanmugham * Copyright (C) 2021 Tim Krüger * Copyright (C) 2021-2022 Andy Scherzinger * Copyright (C) 2017 Mario Danic (mario@lovelyhq.com) + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,6 +54,7 @@ import android.widget.Checkable import android.widget.EditText import android.widget.LinearLayout import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat @@ -107,6 +110,12 @@ import javax.inject.Inject class SettingsActivity : BaseActivity() { private lateinit var binding: ActivitySettingsBinding + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + @Inject lateinit var ncApi: NcApi @@ -246,7 +255,7 @@ class SettingsActivity : BaseActivity() { private fun setupActionBar() { setSupportActionBar(binding.settingsToolbar) binding.settingsToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt index ee5b34583..7327b4c9e 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt @@ -4,9 +4,11 @@ * @author Tim Krüger * @author Álvaro Brey * @author Marcel Hibbe + * @author Ezhil Shanmugham * Copyright (C) 2023 Marcel Hibbe * Copyright (C) 2022 Álvaro Brey * Copyright (C) 2022 Tim Krüger + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,6 +30,7 @@ import android.os.Bundle import android.util.Log import android.view.MenuItem import android.view.View +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.ViewModelProvider @@ -53,6 +56,13 @@ import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) class SharedItemsActivity : AppCompatActivity() { + private val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + + } + @Inject lateinit var viewModelFactory: ViewModelProvider.Factory @@ -246,7 +256,7 @@ class SharedItemsActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - onBackPressed() + onBackPressedDispatcher.addCallback(this, callback) true } else { super.onOptionsItemSelected(item) From 8348792313eb97ede41a6bad669194113eaec97a Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Fri, 19 May 2023 23:19:41 +0530 Subject: [PATCH 2/6] Fixed ktlint and detekt errors Signed-off-by: Andy Scherzinger --- .../nextcloud/talk/conversationinfo/ConversationInfoActivity.kt | 1 - .../talk/conversationlist/ConversationsListActivity.kt | 2 -- app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt | 1 - .../remotefilebrowser/activities/RemoteFileBrowserActivity.kt | 1 - .../talk/shareditems/activities/SharedItemsActivity.kt | 1 - 5 files changed, 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index 7c30d45d7..58a8fdb5e 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -114,7 +114,6 @@ class ConversationInfoActivity : override fun handleOnBackPressed() { finish() } - } @Inject diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index cc25dd361..ab52cef60 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -1367,7 +1367,6 @@ class ConversationsListActivity : showErrorDialog() } - override fun onBackPressed() { val callback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { @@ -1384,7 +1383,6 @@ class ConversationsListActivity : finishAffinity() } - companion object { const val TAG = "ConvListController" const val UNREAD_BUBBLE_DELAY = 2500 diff --git a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt index 1d46d8997..0a8e005d0 100644 --- a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt @@ -93,7 +93,6 @@ class ProfileActivity : BaseActivity() { override fun handleOnBackPressed() { finish() } - } @Inject diff --git a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt index ff4da52d7..5de444843 100644 --- a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt @@ -206,7 +206,6 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe callback.handleOnBackPressed() } - override fun onResume() { super.onResume() refreshCurrentPath() diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt index 7327b4c9e..ec428bd6c 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt @@ -60,7 +60,6 @@ class SharedItemsActivity : AppCompatActivity() { override fun handleOnBackPressed() { finish() } - } @Inject From d4a44729686454013ab9a66715664ba844b11bc3 Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Fri, 19 May 2023 23:51:23 +0530 Subject: [PATCH 3/6] Removed mistakenly added authorship Signed-off-by: Ezhil Shanmugham ezhil56x.contact@gmail.com Signed-off-by: Andy Scherzinger --- app/build.gradle | 2 +- .../java/com/nextcloud/talk/location/LocationPickerActivity.kt | 2 -- .../com/nextcloud/talk/messagesearch/MessageSearchActivity.kt | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f734122f9..a6e1ba438 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -301,7 +301,7 @@ dependencies { gplayImplementation 'com.google.android.gms:play-services-base:18.2.0' gplayImplementation "com.google.firebase:firebase-messaging:23.1.2" - implementation 'androidx.activity:activity-ktx:1.6.0-rc02' + implementation 'androidx.activity:activity-ktx:1.7.1' implementation 'com.github.nextcloud.android-common:ui:0.10.0' diff --git a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt index 5033ff2e3..48d4ced50 100644 --- a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt @@ -2,9 +2,7 @@ * Nextcloud Talk application * * @author Marcel Hibbe - * @author Ezhil Shanmugham * Copyright (C) 2021 Marcel Hibbe - * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt index 084fa322a..0d1db5fa6 100644 --- a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt @@ -2,10 +2,8 @@ * Nextcloud Talk application * * @author Álvaro Brey - * @author Ezhil Shanmugham * Copyright (C) 2022 Álvaro Brey * Copyright (C) 2022 Nextcloud GmbH - * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by From 64fa8e830b03d2586151e123bb728e82af2b1bfa Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Mon, 22 May 2023 18:47:47 +0530 Subject: [PATCH 4/6] Made suggested changes in FullScreenImageActivity.kt, ConversationsListActivity.kt and in some files Signed-off-by: Ezhil Shanmugham ezhil56x.contact@gmail.com Signed-off-by: Andy Scherzinger --- .../activities/FullScreenImageActivity.kt | 18 ++++++----- .../activities/FullScreenMediaActivity.kt | 18 ++++++----- .../FullScreenTextViewerActivity.kt | 18 ++++++----- .../nextcloud/talk/activities/MainActivity.kt | 20 ++++++------ .../com/nextcloud/talk/chat/ChatActivity.kt | 6 ++-- .../ConversationsListActivity.kt | 31 ++++++------------- .../talk/location/LocationPickerActivity.kt | 8 +++-- .../messagesearch/MessageSearchActivity.kt | 10 +++--- .../activities/RemoteFileBrowserActivity.kt | 4 +-- .../activities/SharedItemsActivity.kt | 15 ++++----- 10 files changed, 75 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt index 7d44b3ea7..bfd7c59c4 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt @@ -4,6 +4,8 @@ * @author Marcel Hibbe * @author Dariusz Olszewski * @author Andy Scherzinger + * @author Ezhil Shanmugham + * Copyright (C) 2023 Ezhil Shanmugham * Copyright (C) 2021 Andy Scherzinger * Copyright (C) 2021 Marcel Hibbe * Copyright (C) 2021 Dariusz Olszewski @@ -45,12 +47,6 @@ import java.io.File class FullScreenImageActivity : AppCompatActivity() { lateinit var binding: ActivityFullScreenImageBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - private lateinit var path: String private var showFullscreen = false @@ -61,8 +57,7 @@ class FullScreenImageActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - // onBackPressed() - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() true } else if (item.itemId == R.id.share) { val shareUri = FileProvider.getUriForFile( @@ -125,6 +120,13 @@ class FullScreenImageActivity : AppCompatActivity() { binding.photoView.visibility = View.VISIBLE displayImage(path) } + + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + onBackPressedDispatcher.addCallback(this, callback) } private fun displayImage(path: String) { diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt index d20f3b545..4b44471ed 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt @@ -3,8 +3,10 @@ * * @author Marcel Hibbe * @author Andy Scherzinger + * @author Ezhil Shanmugham * Copyright (C) 2021 Andy Scherzinger * Copyright (C) 2021 Marcel Hibbe + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,12 +49,6 @@ import java.io.File class FullScreenMediaActivity : AppCompatActivity(), Player.Listener { lateinit var binding: ActivityFullScreenMediaBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - private lateinit var path: String private lateinit var player: SimpleExoPlayer @@ -63,8 +59,7 @@ class FullScreenMediaActivity : AppCompatActivity(), Player.Listener { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - // onBackPressed() - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() true } else if (item.itemId == R.id.share) { val shareUri = FileProvider.getUriForFile( @@ -120,6 +115,13 @@ class FullScreenMediaActivity : AppCompatActivity(), Player.Listener { } } ) + + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + onBackPressedDispatcher.addCallback(this, callback) } override fun onStart() { diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt index 81ffff5b6..dc057cd3e 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt @@ -3,8 +3,10 @@ * * @author Marcel Hibbe * @author Andy Scherzinger + * @author Ezhil Shanmugham * Copyright (C) 2021 Andy Scherzinger * Copyright (C) 2021 Marcel Hibbe + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,12 +48,6 @@ import javax.inject.Inject class FullScreenTextViewerActivity : AppCompatActivity() { lateinit var binding: ActivityFullScreenTextBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var viewThemeUtils: ViewThemeUtils @@ -64,8 +60,7 @@ class FullScreenTextViewerActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - // onBackPressed() - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() true } else if (item.itemId == R.id.share) { val shareUri = FileProvider.getUriForFile( @@ -122,6 +117,13 @@ class FullScreenTextViewerActivity : AppCompatActivity() { ResourcesCompat.getColor(resources, R.color.bg_default, null) ) } + + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + onBackPressedDispatcher.addCallback(this, callback) } private fun readFile(fileName: String) = File(fileName).inputStream().readBytes().toString(Charsets.UTF_8) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 489303ffd..3d4a6745c 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -4,9 +4,11 @@ * @author Mario Danic * @author Andy Scherzinger * @author Marcel Hibbe + * @author Ezhil Shanmugham * Copyright (C) 2023 Marcel Hibbe * Copyright (C) 2021 Andy Scherzinger (infoi@andy-scherzinger.de) * Copyright (C) 2017 Mario Danic (mario@lovelyhq.com) + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -75,12 +77,6 @@ import javax.inject.Inject class MainActivity : BaseActivity(), ActionBarProvider { lateinit var binding: ActivityMainBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var ncApi: NcApi @@ -143,6 +139,13 @@ class MainActivity : BaseActivity(), ActionBarProvider { } }) } + + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + onBackPressedDispatcher.addCallback(this, callback) } fun lockScreenIfConditionsApply() { @@ -360,10 +363,9 @@ class MainActivity : BaseActivity(), ActionBarProvider { } } - override fun onBackPressed() { + fun handleOnBackPressed() { if (!router!!.handleBack()) { - // super.onBackPressed() - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } } diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 3ab372485..e86c9b90e 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -5,10 +5,12 @@ * @author Marcel Hibbe * @author Andy Scherzinger * @author Tim Krüger + * @author Ezhil Shanmugham * Copyright (C) 2021-2022 Tim Krüger * Copyright (C) 2021 Andy Scherzinger * Copyright (C) 2021-2022 Marcel Hibbe * Copyright (C) 2017-2019 Mario Danic + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -612,7 +614,7 @@ class ChatActivity : private fun setupActionBar() { setSupportActionBar(binding.chatToolbar) binding.chatToolbar.setNavigationOnClickListener { - onBackPressed() + handleOnBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) @@ -621,7 +623,7 @@ class ChatActivity : viewThemeUtils.material.themeToolbar(binding.chatToolbar) } - override fun onBackPressed() { + fun handleOnBackPressed() { val intent = Intent(this, ConversationsListActivity::class.java) intent.putExtras(Bundle()) startActivity(intent) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index ab52cef60..e9590f96d 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -146,12 +146,6 @@ class ConversationsListActivity : private lateinit var binding: ControllerConversationsRvBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var userManager: UserManager @@ -195,6 +189,8 @@ class ConversationsListActivity : private var searchHelper: MessageSearchHelper? = null private var searchViewDisposable: Disposable? = null + private lateinit var callback: OnBackPressedCallback + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) @@ -207,6 +203,13 @@ class ConversationsListActivity : viewThemeUtils.material.themeSearchBarText(binding.searchText) forwardMessage = intent.getBooleanExtra(KEY_FORWARD_MSG_FLAG, false) + + callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + onBackPressedDispatcher.addCallback(this, callback) } override fun onResume() { @@ -1367,22 +1370,6 @@ class ConversationsListActivity : showErrorDialog() } - override fun onBackPressed() { - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - - onBackPressedDispatcher.addCallback(this, callback) - - // TODO: replace this when conductor is removed. For now it avoids loading the MainActivity which has no UI. - callback.isEnabled = true - callback.handleOnBackPressed() - - finishAffinity() - } - companion object { const val TAG = "ConvListController" const val UNREAD_BUBBLE_DELAY = 2500 diff --git a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt index 48d4ced50..fc478d29c 100644 --- a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt @@ -2,7 +2,9 @@ * Nextcloud Talk application * * @author Marcel Hibbe + * @author Ezhil Shanmugham * Copyright (C) 2021 Marcel Hibbe + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -175,7 +177,7 @@ class LocationPickerActivity : private fun setupActionBar() { setSupportActionBar(binding.locationPickerToolbar) binding.locationPickerToolbar.setNavigationOnClickListener { - onBackPressed() + handleOnBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) @@ -572,9 +574,9 @@ class LocationPickerActivity : // empty } - override fun onBackPressed() { + fun handleOnBackPressed() { setResult(Activity.RESULT_CANCELED) - finish() + finishAffinity() } companion object { diff --git a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt index 0d1db5fa6..e8b98f071 100644 --- a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt @@ -2,8 +2,10 @@ * Nextcloud Talk application * * @author Álvaro Brey + * @author Ezhil Shanmugham * Copyright (C) 2022 Álvaro Brey * Copyright (C) 2022 Nextcloud GmbH + * Copyright (C) 2023 Ezhil Shanmugham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -210,7 +212,7 @@ class MessageSearchActivity : BaseActivity() { } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { - onBackPressed() + handleOnBackPressed() return false } }) @@ -236,15 +238,15 @@ class MessageSearchActivity : BaseActivity() { .subscribe { newText -> viewModel.onQueryTextChange(newText) } } - override fun onBackPressed() { + fun handleOnBackPressed() { setResult(Activity.RESULT_CANCELED) - finish() + finishAffinity() } override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> { - onBackPressed() + handleOnBackPressed() true } else -> super.onOptionsItemSelected(item) diff --git a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt index 5de444843..c684f3779 100644 --- a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt @@ -194,7 +194,7 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe return true } - override fun onBackPressed() { + fun handleOnBackPressed() { val callback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { setResult(Activity.RESULT_CANCELED) @@ -223,7 +223,7 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> { - onBackPressed() + handleOnBackPressed() true } R.id.files_selection_done -> { diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt index ec428bd6c..4f47024bc 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt @@ -56,12 +56,6 @@ import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) class SharedItemsActivity : AppCompatActivity() { - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var viewModelFactory: ViewModelProvider.Factory @@ -112,6 +106,13 @@ class SharedItemsActivity : AppCompatActivity() { }) viewModel.initialize(user, roomToken) + + val callback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finish() + } + } + onBackPressedDispatcher.addCallback(this, callback) } private fun handleModelChange( @@ -255,7 +256,7 @@ class SharedItemsActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() true } else { super.onOptionsItemSelected(item) From dff9ea56519e0517dbb9b791c5987b83ac933184 Mon Sep 17 00:00:00 2001 From: Ezhil Shanmugham Date: Mon, 22 May 2023 19:07:50 +0530 Subject: [PATCH 5/6] Fixed intendation Signed-off-by: Ezhil Shanmugham ezhil56x.contact@gmail.com Signed-off-by: Andy Scherzinger --- .../main/java/com/nextcloud/talk/activities/MainActivity.kt | 2 +- .../com/nextcloud/talk/messagesearch/MessageSearchActivity.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 3d4a6745c..c4174ae0a 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -363,7 +363,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { } } - fun handleOnBackPressed() { + fun handleOnBackPressed() { if (!router!!.handleBack()) { onBackPressedDispatcher.onBackPressed() } diff --git a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt index e8b98f071..1bf287b4f 100644 --- a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt @@ -238,9 +238,9 @@ class MessageSearchActivity : BaseActivity() { .subscribe { newText -> viewModel.onQueryTextChange(newText) } } - fun handleOnBackPressed() { + fun handleOnBackPressed() { setResult(Activity.RESULT_CANCELED) - finishAffinity() + finishAffinity() } override fun onOptionsItemSelected(item: MenuItem): Boolean { From d127c5401adae5b4588417b033ac81488fe8811f Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 24 May 2023 13:00:10 +0200 Subject: [PATCH 6/6] fix new onBackPressed handling this commit fixes bugs from d3056ff2825e53040ca49b86b84f91f73a3eb11c and 1185dcf17a99ca62efd32f8a53c298ec4fd6c4d0 fix onBackPressed handling to use OnBackPressedCallback remove unnecessary onBackPressedCallback's when they only finished the activity replaced some finishAffinity methods with finish ... Signed-off-by: Marcel Hibbe Signed-off-by: Andy Scherzinger --- .../talk/activities/CallBaseActivity.java | 21 +++++++---- .../activities/FullScreenImageActivity.kt | 8 ---- .../activities/FullScreenMediaActivity.kt | 8 ---- .../FullScreenTextViewerActivity.kt | 8 ---- .../nextcloud/talk/activities/MainActivity.kt | 21 +++++------ .../talk/activities/TakePhotoActivity.java | 37 ++++++++++--------- .../com/nextcloud/talk/chat/ChatActivity.kt | 19 ++++++---- .../talk/contacts/ContactsActivity.kt | 9 +---- .../ConversationInfoActivity.kt | 9 +---- .../ConversationInfoEditActivity.kt | 9 +---- .../ConversationsListActivity.kt | 16 ++++---- .../talk/location/GeocodingActivity.kt | 9 +---- .../talk/location/LocationPickerActivity.kt | 17 ++++++--- .../messagesearch/MessageSearchActivity.kt | 19 ++++++---- .../nextcloud/talk/profile/ProfileActivity.kt | 9 +---- .../activities/RemoteFileBrowserActivity.kt | 23 +++++------- .../talk/settings/SettingsActivity.kt | 9 +---- .../activities/SharedItemsActivity.kt | 8 ---- .../talk/translate/ui/TranslateActivity.kt | 2 +- 19 files changed, 102 insertions(+), 159 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallBaseActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallBaseActivity.java index ece059e6e..261a3c058 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallBaseActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallBaseActivity.java @@ -35,6 +35,8 @@ import android.view.WindowManager; import com.nextcloud.talk.BuildConfig; +import androidx.activity.OnBackPressedCallback; + public abstract class CallBaseActivity extends BaseActivity { public static final String TAG = "CallBaseActivity"; @@ -43,6 +45,16 @@ public abstract class CallBaseActivity extends BaseActivity { public Boolean isInPipMode = Boolean.FALSE; long onCreateTime; + + private OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + if (isPipModePossible()) { + enterPipMode(); + } + } + }; + @SuppressLint("ClickableViewAccessibility") @Override public void onCreate(Bundle savedInstanceState) { @@ -58,6 +70,8 @@ public abstract class CallBaseActivity extends BaseActivity { if (isGreaterEqualOreo() && isPipModePossible()) { mPictureInPictureParamsBuilder = new PictureInPictureParams.Builder(); } + + getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback); } void hideNavigationIfNoPipAvailable(){ @@ -101,13 +115,6 @@ public abstract class CallBaseActivity extends BaseActivity { } } - @Override - public void onBackPressed() { - if (isPipModePossible()) { - enterPipMode(); - } - } - @Override protected void onUserLeaveHint() { long onUserLeaveHintTime = System.currentTimeMillis(); diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt index bfd7c59c4..ddd5c0813 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenImageActivity.kt @@ -33,7 +33,6 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import com.nextcloud.talk.BuildConfig @@ -120,13 +119,6 @@ class FullScreenImageActivity : AppCompatActivity() { binding.photoView.visibility = View.VISIBLE displayImage(path) } - - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - onBackPressedDispatcher.addCallback(this, callback) } private fun displayImage(path: String) { diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt index 4b44471ed..7a665183d 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenMediaActivity.kt @@ -30,7 +30,6 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.view.WindowManager -import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import autodagger.AutoInjector @@ -115,13 +114,6 @@ class FullScreenMediaActivity : AppCompatActivity(), Player.Listener { } } ) - - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - onBackPressedDispatcher.addCallback(this, callback) } override fun onStart() { diff --git a/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt index dc057cd3e..00d17b7d5 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/FullScreenTextViewerActivity.kt @@ -28,7 +28,6 @@ import android.content.Intent import android.os.Bundle import android.view.Menu import android.view.MenuItem -import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import androidx.core.content.res.ResourcesCompat @@ -117,13 +116,6 @@ class FullScreenTextViewerActivity : AppCompatActivity() { ResourcesCompat.getColor(resources, R.color.bg_default, null) ) } - - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - onBackPressedDispatcher.addCallback(this, callback) } private fun readFile(fileName: String) = File(fileName).inputStream().readBytes().toString(Charsets.UTF_8) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index c4174ae0a..78f4d3535 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -85,6 +85,14 @@ class MainActivity : BaseActivity(), ActionBarProvider { private var router: Router? = null + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + if (!router!!.handleBack()) { + finish() + } + } + } + @Suppress("Detekt.TooGenericExceptionCaught") override fun onCreate(savedInstanceState: Bundle?) { Log.d(TAG, "onCreate: Activity: " + System.identityHashCode(this).toString()) @@ -140,12 +148,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { }) } - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } fun lockScreenIfConditionsApply() { @@ -363,12 +366,6 @@ class MainActivity : BaseActivity(), ActionBarProvider { } } - fun handleOnBackPressed() { - if (!router!!.handleBack()) { - onBackPressedDispatcher.onBackPressed() - } - } - private fun logRouterBackStack(router: Router) { if (BuildConfig.DEBUG) { val backstack = router.backstack diff --git a/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java b/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java index 6a6f9c7a2..e7743ca2a 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/TakePhotoActivity.java @@ -95,6 +95,23 @@ public class TakePhotoActivity extends AppCompatActivity { @Inject ViewThemeUtils viewThemeUtils; + private OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + Uri uri = (Uri) binding.photoPreview.getTag(); + + if (uri != null) { + File photoFile = new File(uri.getPath()); + if (!photoFile.delete()) { + Log.w(TAG, "Error deleting temp camera image"); + } + binding.photoPreview.setTag(null); + } + + finish(); + } + }; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -221,26 +238,10 @@ public class TakePhotoActivity extends AppCompatActivity { finish(); } }, ContextCompat.getMainExecutor(this)); + + getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback); } - private OnBackPressedCallback callback = new OnBackPressedCallback(true) { - @Override - public void handleOnBackPressed() { - Uri uri = (Uri) binding.photoPreview.getTag(); - - if (uri != null) { - File photoFile = new File(uri.getPath()); - if (!photoFile.delete()) { - Log.w(TAG, "Error deleting temp camera image"); - } - binding.photoPreview.setTag(null); - } - - finish(); - } - }; - - private void showCameraElements() { binding.send.setVisibility(View.GONE); binding.retake.setVisibility(View.GONE); diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index e86c9b90e..5f7c67410 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -74,6 +74,7 @@ import android.widget.ImageView import android.widget.PopupMenu import android.widget.RelativeLayout import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AlertDialog import androidx.appcompat.view.ContextThemeWrapper import androidx.core.content.ContextCompat @@ -309,6 +310,14 @@ class ChatActivity : private var videoURI: Uri? = null + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + val intent = Intent(this@ChatActivity, ConversationsListActivity::class.java) + intent.putExtras(Bundle()) + startActivity(intent) + } + } + var typingTimer: CountDownTimer? = null val typingParticipants = HashMap() @@ -362,6 +371,8 @@ class ChatActivity : initAdapter() binding.messagesListView.setAdapter(adapter) + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } override fun onNewIntent(intent: Intent) { @@ -614,7 +625,7 @@ class ChatActivity : private fun setupActionBar() { setSupportActionBar(binding.chatToolbar) binding.chatToolbar.setNavigationOnClickListener { - handleOnBackPressed() + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) @@ -623,12 +634,6 @@ class ChatActivity : viewThemeUtils.material.themeToolbar(binding.chatToolbar) } - fun handleOnBackPressed() { - val intent = Intent(this, ConversationsListActivity::class.java) - intent.putExtras(Bundle()) - startActivity(intent) - } - private fun initAdapter() { val senderId = if (!conversationUser!!.userId.equals("?")) { "users/" + conversationUser!!.userId diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt index 916d355ee..fea14592b 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt @@ -36,7 +36,6 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.view.inputmethod.EditorInfo -import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.core.content.res.ResourcesCompat import androidx.core.view.MenuItemCompat @@ -93,12 +92,6 @@ class ContactsActivity : FlexibleAdapter.OnItemClickListener { private lateinit var binding: ControllerContactsRvBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var userManager: UserManager @@ -195,7 +188,7 @@ class ContactsActivity : private fun setupActionBar() { setSupportActionBar(binding.contactsToolbar) binding.contactsToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index 58a8fdb5e..fdfd44db4 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -41,7 +41,6 @@ import android.view.View import android.view.View.GONE import android.view.View.VISIBLE import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.SwitchCompat import androidx.work.Data @@ -110,12 +109,6 @@ class ConversationInfoActivity : private lateinit var binding: ActivityConversationInfoBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var ncApi: NcApi @@ -202,7 +195,7 @@ class ConversationInfoActivity : private fun setupActionBar() { setSupportActionBar(binding.conversationInfoToolbar) binding.conversationInfoToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index 980274d3d..6eecacb88 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -32,7 +32,6 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.core.net.toFile import androidx.core.view.ViewCompat import autodagger.AutoInjector @@ -72,12 +71,6 @@ class ConversationInfoEditActivity : private lateinit var binding: ActivityConversationInfoEditBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var ncApi: NcApi @@ -158,7 +151,7 @@ class ConversationInfoEditActivity : private fun setupActionBar() { setSupportActionBar(binding.conversationInfoEditToolbar) binding.conversationInfoEditToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index e9590f96d..489a99ec4 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -189,7 +189,12 @@ class ConversationsListActivity : private var searchHelper: MessageSearchHelper? = null private var searchViewDisposable: Disposable? = null - private lateinit var callback: OnBackPressedCallback + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + // TODO: replace this when conductor is removed. For now it avoids to load the MainActiviy which has no UI. + finishAffinity() + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -204,12 +209,7 @@ class ConversationsListActivity : forwardMessage = intent.getBooleanExtra(KEY_FORWARD_MSG_FLAG, false) - callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } override fun onResume() { @@ -256,7 +256,7 @@ class ConversationsListActivity : private fun setupActionBar() { setSupportActionBar(binding.conversationListToolbar) binding.conversationListToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt b/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt index c14a63c6a..535356699 100644 --- a/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt @@ -33,7 +33,6 @@ import android.view.MenuItem import android.view.inputmethod.EditorInfo import android.widget.AdapterView import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.core.view.MenuItemCompat import androidx.preference.PreferenceManager @@ -79,12 +78,6 @@ class GeocodingActivity : lateinit var adapter: GeocodingAdapter private var geocodingResults: List
= ArrayList() - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) @@ -130,7 +123,7 @@ class GeocodingActivity : private fun setupActionBar() { setSupportActionBar(binding.geocodingToolbar) binding.geocodingToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt index fc478d29c..fef8a16ab 100644 --- a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt @@ -41,6 +41,7 @@ import android.view.MenuItem import android.view.View import android.view.inputmethod.EditorInfo import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.core.content.PermissionChecker import androidx.core.content.res.ResourcesCompat @@ -117,6 +118,13 @@ class LocationPickerActivity : var searchItem: MenuItem? = null var searchView: SearchView? = null + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + setResult(Activity.RESULT_CANCELED) + finish() + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) @@ -137,6 +145,8 @@ class LocationPickerActivity : setupSystemColors() getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context)) + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } override fun onStart() { @@ -177,7 +187,7 @@ class LocationPickerActivity : private fun setupActionBar() { setSupportActionBar(binding.locationPickerToolbar) binding.locationPickerToolbar.setNavigationOnClickListener { - handleOnBackPressed() + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) @@ -574,11 +584,6 @@ class LocationPickerActivity : // empty } - fun handleOnBackPressed() { - setResult(Activity.RESULT_CANCELED) - finishAffinity() - } - companion object { private val TAG = LocationPickerActivity::class.java.simpleName private const val REQUEST_PERMISSIONS_REQUEST_CODE = 1 diff --git a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt index 1bf287b4f..a4f8373c6 100644 --- a/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/messagesearch/MessageSearchActivity.kt @@ -31,6 +31,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.lifecycle.ViewModelProvider import autodagger.AutoInjector @@ -74,6 +75,13 @@ class MessageSearchActivity : BaseActivity() { private var searchViewDisposable: Disposable? = null private var adapter: FlexibleAdapter>? = null + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + setResult(Activity.RESULT_CANCELED) + finish() + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) @@ -92,6 +100,8 @@ class MessageSearchActivity : BaseActivity() { binding.swipeRefreshLayout.setOnRefreshListener { viewModel.refresh(searchView.query?.toString()) } + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } private fun setupActionBar() { @@ -212,7 +222,7 @@ class MessageSearchActivity : BaseActivity() { } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { - handleOnBackPressed() + onBackPressedDispatcher.onBackPressed() return false } }) @@ -238,15 +248,10 @@ class MessageSearchActivity : BaseActivity() { .subscribe { newText -> viewModel.onQueryTextChange(newText) } } - fun handleOnBackPressed() { - setResult(Activity.RESULT_CANCELED) - finishAffinity() - } - override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> { - handleOnBackPressed() + onBackPressedDispatcher.onBackPressed() true } else -> super.onOptionsItemSelected(item) diff --git a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt index 0a8e005d0..136b364ee 100644 --- a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt @@ -41,7 +41,6 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat import androidx.core.net.toFile @@ -89,12 +88,6 @@ import javax.inject.Inject class ProfileActivity : BaseActivity() { private lateinit var binding: ActivityProfileBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var ncApi: NcApi @@ -194,7 +187,7 @@ class ProfileActivity : BaseActivity() { private fun setupActionBar() { setSupportActionBar(binding.profileToolbar) binding.profileToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt index c684f3779..f1647ffc4 100644 --- a/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/remotefilebrowser/activities/RemoteFileBrowserActivity.kt @@ -76,6 +76,13 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe private var filesSelectionDoneMenuItem: MenuItem? = null + private val onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + setResult(Activity.RESULT_CANCELED) + finish() + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) @@ -113,6 +120,8 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe binding.sortButton.setOnClickListener { changeSorting() } viewModel.loadItems() + + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } private fun initViewModel(mimeTypeSelectionFilter: String?) { @@ -194,18 +203,6 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe return true } - fun handleOnBackPressed() { - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - setResult(Activity.RESULT_CANCELED) - finish() - } - } - - onBackPressedDispatcher.addCallback(this, callback) - callback.handleOnBackPressed() - } - override fun onResume() { super.onResume() refreshCurrentPath() @@ -223,7 +220,7 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> { - handleOnBackPressed() + onBackPressedDispatcher.onBackPressed() true } R.id.files_selection_done -> { diff --git a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt index 8c3db9dfd..55fd82bbf 100644 --- a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt @@ -54,7 +54,6 @@ import android.widget.Checkable import android.widget.EditText import android.widget.LinearLayout import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat @@ -110,12 +109,6 @@ import javax.inject.Inject class SettingsActivity : BaseActivity() { private lateinit var binding: ActivitySettingsBinding - private val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - @Inject lateinit var ncApi: NcApi @@ -255,7 +248,7 @@ class SettingsActivity : BaseActivity() { private fun setupActionBar() { setSupportActionBar(binding.settingsToolbar) binding.settingsToolbar.setNavigationOnClickListener { - onBackPressedDispatcher.addCallback(this, callback) + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt index 4f47024bc..d06a5f983 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt @@ -30,7 +30,6 @@ import android.os.Bundle import android.util.Log import android.view.MenuItem import android.view.View -import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.ViewModelProvider @@ -106,13 +105,6 @@ class SharedItemsActivity : AppCompatActivity() { }) viewModel.initialize(user, roomToken) - - val callback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - finish() - } - } - onBackPressedDispatcher.addCallback(this, callback) } private fun handleModelChange( diff --git a/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt b/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt index 7a5aef723..48ee313de 100644 --- a/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt @@ -127,7 +127,7 @@ class TranslateActivity : BaseActivity() { private fun setupActionBar() { setSupportActionBar(binding.translationToolbar) binding.translationToolbar.setNavigationOnClickListener { - onBackPressed() + onBackPressedDispatcher.onBackPressed() } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true)