From 330401c7d01c682fa8b47ab7058a97ad39aad6f3 Mon Sep 17 00:00:00 2001 From: Nik Clayton Date: Thu, 1 Dec 2022 19:51:13 +0100 Subject: [PATCH] Disable tab swiping by preference in profile and search (#2889) The "Enable swipe gesture to switch between tabs" preference was ignored on the tabs on a profile page ("Posts", "With Replies", "Pinned", "Media"), and search ("Posts", "Accounts", "Hashtags"). Fix this. While I'm here, replace a string for the preference name in MainActivity.kt with a constant. Fixes https://github.com/tuskyapp/Tusky/issues/2874. --- app/src/main/java/com/keylesspalace/tusky/MainActivity.kt | 2 +- .../tusky/components/account/AccountActivity.kt | 5 +++++ .../tusky/components/search/SearchActivity.kt | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt index c00387b5f..a8056fbd3 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt @@ -612,7 +612,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje val pageMargin = resources.getDimensionPixelSize(R.dimen.tab_page_margin) binding.viewPager.setPageTransformer(MarginPageTransformer(pageMargin)) - val enableSwipeForTabs = preferences.getBoolean("enableSwipeForTabs", true) + val enableSwipeForTabs = preferences.getBoolean(PrefKeys.ENABLE_SWIPE_FOR_TABS, true) binding.viewPager.isUserInputEnabled = enableSwipeForTabs onTabSelectedListener?.let { diff --git a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt index b66ebdb33..57ce34741 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/account/AccountActivity.kt @@ -103,6 +103,8 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI private lateinit var accountFieldAdapter: AccountFieldAdapter + private val preferences by lazy { PreferenceManager.getDefaultSharedPreferences(this) } + private var followState: FollowState = FollowState.NOT_FOLLOWING private var blocking: Boolean = false private var muting: Boolean = false @@ -243,6 +245,9 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI val pageMargin = resources.getDimensionPixelSize(R.dimen.tab_page_margin) binding.accountFragmentViewPager.setPageTransformer(MarginPageTransformer(pageMargin)) + val enableSwipeForTabs = preferences.getBoolean(PrefKeys.ENABLE_SWIPE_FOR_TABS, true) + binding.accountFragmentViewPager.isUserInputEnabled = enableSwipeForTabs + binding.accountTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabReselected(tab: TabLayout.Tab?) { tab?.position?.let { position -> diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt index 8ca7248cf..d0fdebc19 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/search/SearchActivity.kt @@ -22,12 +22,14 @@ import android.os.Bundle import android.view.Menu import androidx.activity.viewModels import androidx.appcompat.widget.SearchView +import androidx.preference.PreferenceManager import com.google.android.material.tabs.TabLayoutMediator import com.keylesspalace.tusky.BottomSheetActivity import com.keylesspalace.tusky.R import com.keylesspalace.tusky.components.search.adapter.SearchPagerAdapter import com.keylesspalace.tusky.databinding.ActivitySearchBinding import com.keylesspalace.tusky.di.ViewModelFactory +import com.keylesspalace.tusky.settings.PrefKeys import com.keylesspalace.tusky.util.viewBinding import dagger.android.DispatchingAndroidInjector import dagger.android.HasAndroidInjector @@ -44,6 +46,8 @@ class SearchActivity : BottomSheetActivity(), HasAndroidInjector { private val binding by viewBinding(ActivitySearchBinding::inflate) + private val preferences by lazy { PreferenceManager.getDefaultSharedPreferences(this) } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) @@ -60,6 +64,9 @@ class SearchActivity : BottomSheetActivity(), HasAndroidInjector { private fun setupPages() { binding.pages.adapter = SearchPagerAdapter(this) + val enableSwipeForTabs = preferences.getBoolean(PrefKeys.ENABLE_SWIPE_FOR_TABS, true) + binding.pages.isUserInputEnabled = enableSwipeForTabs + TabLayoutMediator(binding.tabs, binding.pages) { tab, position -> tab.text = getPageTitle(position)