From 790481bc0a767e60315a30dab4023ca4ec3811ba Mon Sep 17 00:00:00 2001 From: jacquarg Date: Mon, 23 Jun 2025 14:35:22 +0200 Subject: [PATCH 1/2] feat:3441: Scroll to tracker list on click W-R more button. --- .../e/advancedprivacy/features/debug/DebugActivity.kt | 7 +++---- .../features/trackers/TrackersFragment.kt | 9 +++++++++ .../features/trackers/TrackersViewModel.kt | 2 ++ app/src/main/res/layout/debug_activity.xml | 1 + app/src/main/res/layout/fragment_trackers.xml | 1 + 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/debug/DebugActivity.kt b/app/src/main/java/foundation/e/advancedprivacy/features/debug/DebugActivity.kt index 388fa2cd..1d6e15b2 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/debug/DebugActivity.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/debug/DebugActivity.kt @@ -36,8 +36,10 @@ class DebugActivity : FragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) + binding = DebugActivityBinding.inflate(layoutInflater) + setContentView(binding.root) - ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.nav_host_fragment)) { v, windowInsets -> + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main_container)) { v, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()) v.updateLayoutParams { topMargin = insets.top @@ -47,8 +49,5 @@ class DebugActivity : FragmentActivity() { } WindowInsetsCompat.CONSUMED } - - binding = DebugActivityBinding.inflate(layoutInflater) - setContentView(binding.root) } } diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt b/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt index 9cf3b406..fe419739 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt @@ -20,6 +20,7 @@ package foundation.e.advancedprivacy.features.trackers import android.content.ActivityNotFoundException import android.content.Intent +import android.graphics.Rect import android.os.Bundle import android.text.Spannable import android.text.SpannableString @@ -164,6 +165,14 @@ class TrackersFragment : NavToolbarFragment(R.layout.fragment_trackers) { } is TrackersViewModel.SingleEvent.GoToPeriod -> binding.trackersPeriodsPager.currentItem = event.periodPosition + is TrackersViewModel.SingleEvent.ScrollToList -> { + val topOfListView = binding.root.findViewById(R.id.lists_tabs) + val offsetViewBounds = Rect() + topOfListView.getDrawingRect(offsetViewBounds) + binding.scrollview.offsetDescendantRectToMyCoords(topOfListView, offsetViewBounds) + + binding.scrollview.smoothScrollTo(0, offsetViewBounds.top) + } } } diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersViewModel.kt b/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersViewModel.kt index 47ed50a9..11df2c6d 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersViewModel.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersViewModel.kt @@ -115,6 +115,7 @@ class TrackersViewModel( labelId == WeeklyReport.LabelId.NEW_TRACKER_2 || labelId == WeeklyReport.LabelId.NEW_TRACKER_3 -> { trackersScreenUseCase.selectTab(Period.MONTH, TrackerTab.TRACKERS) + _singleEvents.emit(SingleEvent.ScrollToList) } labelId == WeeklyReport.LabelId.TRACKER_WITH_MOST_APPS_1 && @@ -127,5 +128,6 @@ class TrackersViewModel( data class ErrorEvent(val error: String) : SingleEvent() data class OpenUrl(val url: Uri) : SingleEvent() data class GoToPeriod(val periodPosition: Int) : SingleEvent() + data object ScrollToList : SingleEvent() } } diff --git a/app/src/main/res/layout/debug_activity.xml b/app/src/main/res/layout/debug_activity.xml index d3cdea8e..7bcb59b4 100644 --- a/app/src/main/res/layout/debug_activity.xml +++ b/app/src/main/res/layout/debug_activity.xml @@ -15,6 +15,7 @@ ~ along with this program. If not, see . --> Date: Thu, 26 Jun 2025 08:57:56 +0200 Subject: [PATCH 2/2] feat:3441: Avoid null pointer exception risks. --- .../features/trackers/TrackersFragment.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt b/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt index fe419739..2829785e 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/trackers/TrackersFragment.kt @@ -165,14 +165,14 @@ class TrackersFragment : NavToolbarFragment(R.layout.fragment_trackers) { } is TrackersViewModel.SingleEvent.GoToPeriod -> binding.trackersPeriodsPager.currentItem = event.periodPosition - is TrackersViewModel.SingleEvent.ScrollToList -> { - val topOfListView = binding.root.findViewById(R.id.lists_tabs) - val offsetViewBounds = Rect() - topOfListView.getDrawingRect(offsetViewBounds) - binding.scrollview.offsetDescendantRectToMyCoords(topOfListView, offsetViewBounds) + is TrackersViewModel.SingleEvent.ScrollToList -> + binding.root.findViewById(R.id.lists_tabs)?.let { topOfListView -> + val offsetViewBounds = Rect() + topOfListView.getDrawingRect(offsetViewBounds) + binding.scrollview.offsetDescendantRectToMyCoords(topOfListView, offsetViewBounds) - binding.scrollview.smoothScrollTo(0, offsetViewBounds.top) - } + binding.scrollview.smoothScrollTo(0, offsetViewBounds.top) + } } } -- GitLab