mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 20:48:43 +00:00
Fix toolbar coloring behavior.
This commit is contained in:
committed by
Greyson Parrelli
parent
117c2ad5dd
commit
a3166a8c73
@@ -13,6 +13,7 @@ import android.os.Bundle
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewTreeObserver
|
import android.view.ViewTreeObserver
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
|
import androidx.activity.enableEdgeToEdge
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
@@ -121,6 +122,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
|||||||
private var onFirstRender = false
|
private var onFirstRender = false
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
||||||
|
enableEdgeToEdge()
|
||||||
AppStartup.getInstance().onCriticalRenderEventStart()
|
AppStartup.getInstance().onCriticalRenderEventStart()
|
||||||
super.onCreate(savedInstanceState, ready)
|
super.onCreate(savedInstanceState, ready)
|
||||||
conversationListTabsViewModel
|
conversationListTabsViewModel
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal
|
|||||||
binding.recycler.adapter = callLogAdapter
|
binding.recycler.adapter = callLogAdapter
|
||||||
this.callLogAdapter = callLogAdapter
|
this.callLogAdapter = callLogAdapter
|
||||||
|
|
||||||
requireListener<Material3OnScrollHelperBinder>().bindScrollHelper(binding.recycler)
|
requireListener<Material3OnScrollHelperBinder>().bindScrollHelper(binding.recycler, viewLifecycleOwner)
|
||||||
binding.fab.setOnClickListener {
|
binding.fab.setOnClickListener {
|
||||||
startActivity(NewCallActivity.createIntent(requireContext()))
|
startActivity(NewCallActivity.createIntent(requireContext()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
requireCallback().bindScrollHelper(list, chatFolderList, color -> {
|
requireCallback().bindScrollHelper(list, getViewLifecycleOwner(), chatFolderList, color -> {
|
||||||
for (int i = 0; i < chatFolderList.getChildCount(); i++) {
|
for (int i = 0; i < chatFolderList.getChildCount(); i++) {
|
||||||
View child = chatFolderList.getChildAt(i);
|
View child = chatFolderList.getChildAt(i);
|
||||||
if (child != null && child.isSelected()) {
|
if (child != null && child.isSelected()) {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import androidx.core.view.ViewCompat
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavDestination
|
import androidx.navigation.NavDestination
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
@@ -264,7 +265,7 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun bindScrollHelper(recyclerView: RecyclerView) {
|
override fun bindScrollHelper(recyclerView: RecyclerView, lifecycleOwner: LifecycleOwner) {
|
||||||
Material3OnScrollHelper(
|
Material3OnScrollHelper(
|
||||||
activity = requireActivity(),
|
activity = requireActivity(),
|
||||||
views = listOf(),
|
views = listOf(),
|
||||||
@@ -272,11 +273,12 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
|||||||
onSetToolbarColor = {
|
onSetToolbarColor = {
|
||||||
toolbarViewModel.setToolbarColor(it)
|
toolbarViewModel.setToolbarColor(it)
|
||||||
},
|
},
|
||||||
lifecycleOwner = viewLifecycleOwner
|
setStatusBarColor = {},
|
||||||
|
lifecycleOwner = lifecycleOwner
|
||||||
).attach(recyclerView)
|
).attach(recyclerView)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun bindScrollHelper(recyclerView: RecyclerView, chatFolders: RecyclerView, setChatFolder: (Int) -> Unit) {
|
override fun bindScrollHelper(recyclerView: RecyclerView, lifecycleOwner: LifecycleOwner, chatFolders: RecyclerView, setChatFolder: (Int) -> Unit) {
|
||||||
Material3OnScrollHelper(
|
Material3OnScrollHelper(
|
||||||
activity = requireActivity(),
|
activity = requireActivity(),
|
||||||
views = listOf(chatFolders),
|
views = listOf(chatFolders),
|
||||||
@@ -284,7 +286,8 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
|||||||
onSetToolbarColor = {
|
onSetToolbarColor = {
|
||||||
toolbarViewModel.setToolbarColor(it)
|
toolbarViewModel.setToolbarColor(it)
|
||||||
},
|
},
|
||||||
lifecycleOwner = viewLifecycleOwner,
|
lifecycleOwner = lifecycleOwner,
|
||||||
|
setStatusBarColor = {},
|
||||||
setChatFolderColor = setChatFolder
|
setChatFolderColor = setChatFolder
|
||||||
).attach(recyclerView)
|
).attach(recyclerView)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,11 +21,15 @@ import androidx.compose.foundation.clickable
|
|||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.BoxWithConstraints
|
import androidx.compose.foundation.layout.BoxWithConstraints
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.statusBars
|
||||||
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
|
import androidx.compose.foundation.layout.windowInsetsTopHeight
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
@@ -188,7 +192,9 @@ fun MainToolbar(
|
|||||||
SearchToolbar(
|
SearchToolbar(
|
||||||
state = state,
|
state = state,
|
||||||
callback = callback,
|
callback = callback,
|
||||||
modifier = Modifier.circularReveal(visibility, revealOffset)
|
modifier = Modifier
|
||||||
|
.windowInsetsPadding(WindowInsets.statusBars)
|
||||||
|
.circularReveal(visibility, revealOffset)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package org.thoughtcrime.securesms.main
|
package org.thoughtcrime.securesms.main
|
||||||
|
|
||||||
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
|
||||||
interface Material3OnScrollHelperBinder {
|
interface Material3OnScrollHelperBinder {
|
||||||
fun bindScrollHelper(recyclerView: RecyclerView)
|
fun bindScrollHelper(recyclerView: RecyclerView, lifecycleOwner: LifecycleOwner)
|
||||||
fun bindScrollHelper(recyclerView: RecyclerView, chatFolders: RecyclerView, setChatFolder: (Int) -> Unit)
|
fun bindScrollHelper(recyclerView: RecyclerView, lifecycleOwner: LifecycleOwner, chatFolders: RecyclerView, setChatFolder: (Int) -> Unit)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l
|
|||||||
MyStoriesItem.register(adapter)
|
MyStoriesItem.register(adapter)
|
||||||
ExpandHeader.register(adapter)
|
ExpandHeader.register(adapter)
|
||||||
|
|
||||||
requireListener<Material3OnScrollHelperBinder>().bindScrollHelper(recyclerView!!)
|
requireListener<Material3OnScrollHelperBinder>().bindScrollHelper(recyclerView!!, viewLifecycleOwner)
|
||||||
|
|
||||||
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
||||||
emptyNotice = requireView().findViewById(R.id.empty_notice)
|
emptyNotice = requireView().findViewById(R.id.empty_notice)
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ open class Material3OnScrollHelper(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
lifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
|
lifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
|
||||||
|
override fun onResume(owner: LifecycleOwner) {
|
||||||
|
setColorImmediate()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroy(owner: LifecycleOwner) {
|
override fun onDestroy(owner: LifecycleOwner) {
|
||||||
animator?.cancel()
|
animator?.cancel()
|
||||||
setStatusBarColor(previousStatusBarColor)
|
setStatusBarColor(previousStatusBarColor)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.BoxWithConstraints
|
|||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
||||||
@@ -133,7 +134,7 @@ fun AppScaffold(
|
|||||||
|
|
||||||
Row {
|
Row {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier.width(listWidth)
|
modifier = Modifier.width(listWidth).navigationBarsPadding()
|
||||||
) {
|
) {
|
||||||
Box(modifier = Modifier.weight(1f)) {
|
Box(modifier = Modifier.weight(1f)) {
|
||||||
listContent()
|
listContent()
|
||||||
|
|||||||
Reference in New Issue
Block a user