diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardFragment.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardFragment.kt new file mode 100644 index 0000000000..32f280abfc --- /dev/null +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardFragment.kt @@ -0,0 +1,85 @@ +/* + * Copyright 2023 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.components.settings.app.internal.conversation.springboard + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.res.vectorResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.fragment.findNavController +import androidx.navigation.navGraphViewModels +import org.signal.core.ui.Rows +import org.signal.core.ui.Scaffolds +import org.signal.core.ui.theme.SignalTheme +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.compose.ComposeFragment + +/** + * Configuration fragment for the internal conversation test fragment. + */ +class InternalConversationSpringboardFragment : ComposeFragment() { + + private val viewModel: InternalConversationSpringboardViewModel by navGraphViewModels(R.id.app_settings) + + @Composable + override fun FragmentContent() { + Content(this::navigateBack, this::launchTestFragment, viewModel.hasWallpaper) + } + + private fun navigateBack() { + findNavController().popBackStack() + } + + private fun launchTestFragment() { + findNavController().navigate( + InternalConversationSpringboardFragmentDirections + .actionInternalConversationSpringboardFragmentToInternalConversationTestFragment() + ) + } +} + +@Preview +@Composable +private fun ContentPreview() { + val hasWallpaper = remember { mutableStateOf(false) } + + SignalTheme(isDarkMode = true) { + Content(onBackPressed = {}, onLaunchTestFragment = {}, hasWallpaper = hasWallpaper) + } +} + +@Composable +private fun Content( + onBackPressed: () -> Unit, + onLaunchTestFragment: () -> Unit, + hasWallpaper: MutableState +) { + Scaffolds.Settings( + title = "Conversation Test Springboard", + onNavigationClick = onBackPressed, + navigationIconPainter = rememberVectorPainter(ImageVector.vectorResource(id = R.drawable.symbol_arrow_left_24)) + ) { + Column(modifier = Modifier.padding(it)) { + Rows.TextRow( + text = "Launch Conversation Test Fragment", + onClick = onLaunchTestFragment + ) + + Rows.ToggleRow( + checked = hasWallpaper.value, + text = "Enable Wallpaper", + onCheckChanged = { hasWallpaper.value = it } + ) + } + } +} diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardViewModel.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardViewModel.kt new file mode 100644 index 0000000000..1f511ada16 --- /dev/null +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardViewModel.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2023 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.components.settings.app.internal.conversation.springboard + +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel + +class InternalConversationSpringboardViewModel : ViewModel() { + val hasWallpaper = mutableStateOf(false) +} diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/ConversationElementGenerator.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/ConversationElementGenerator.kt similarity index 99% rename from app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/ConversationElementGenerator.kt rename to app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/ConversationElementGenerator.kt index 09a5dd1266..649af268ac 100644 --- a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/ConversationElementGenerator.kt +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/ConversationElementGenerator.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.components.settings.app.internal.conversation +package org.thoughtcrime.securesms.components.settings.app.internal.conversation.test import org.thoughtcrime.securesms.conversation.ConversationMessage.ConversationMessageFactory import org.thoughtcrime.securesms.conversation.v2.data.ConversationElementKey diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestDataSource.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestDataSource.kt similarity index 98% rename from app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestDataSource.kt rename to app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestDataSource.kt index a3153a1509..ef2f97a7bc 100644 --- a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestDataSource.kt +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestDataSource.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.components.settings.app.internal.conversation +package org.thoughtcrime.securesms.components.settings.app.internal.conversation.test import org.signal.paging.PagedDataSource import org.thoughtcrime.securesms.conversation.v2.data.ConversationElementKey diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestFragment.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt similarity index 94% rename from app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestFragment.kt rename to app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt index bdb2354eb2..6412361e74 100644 --- a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestFragment.kt +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.components.settings.app.internal.conversation +package org.thoughtcrime.securesms.components.settings.app.internal.conversation.test import android.net.Uri import android.os.Bundle @@ -12,6 +12,7 @@ import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.Observer +import androidx.navigation.navGraphViewModels import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.kotlin.subscribeBy import org.signal.core.util.concurrent.LifecycleDisposable @@ -20,6 +21,7 @@ import org.signal.ringrtc.CallLinkRootKey import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.ViewBinderDelegate import org.thoughtcrime.securesms.components.recyclerview.SmoothScrollingLinearLayoutManager +import org.thoughtcrime.securesms.components.settings.app.internal.conversation.springboard.InternalConversationSpringboardViewModel import org.thoughtcrime.securesms.components.voice.VoiceNotePlaybackState import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.conversation.ConversationAdapter.ItemClickListener @@ -54,16 +56,21 @@ class InternalConversationTestFragment : Fragment(R.layout.conversation_test_fra private val binding by ViewBinderDelegate(ConversationTestFragmentBinding::bind) private val viewModel: InternalConversationTestViewModel by viewModels() private val lifecycleDisposable = LifecycleDisposable() + private val springboardViewModel: InternalConversationSpringboardViewModel by navGraphViewModels(R.id.app_settings) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val adapter = ConversationAdapterV2( lifecycleOwner = viewLifecycleOwner, glideRequests = GlideApp.with(this), clickListener = ClickListener(), - hasWallpaper = false, + hasWallpaper = springboardViewModel.hasWallpaper.value, colorizer = Colorizer() ) + if (springboardViewModel.hasWallpaper.value) { + binding.root.setBackgroundColor(0xFF32C7E2.toInt()) + } + var startTime = 0L var firstRender = true lifecycleDisposable.bindTo(viewLifecycleOwner) @@ -83,10 +90,10 @@ class InternalConversationTestFragment : Fragment(R.layout.conversation_test_fra } } - binding.root.layoutManager = SmoothScrollingLinearLayoutManager(requireContext(), true) - binding.root.adapter = adapter + binding.recycler.layoutManager = SmoothScrollingLinearLayoutManager(requireContext(), true) + binding.recycler.adapter = adapter - RecyclerViewColorizer(binding.root).apply { + RecyclerViewColorizer(binding.recycler).apply { setChatColors(ChatColorsPalette.Bubbles.default.withId(ChatColors.Id.Auto)) } } diff --git a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestViewModel.kt b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestViewModel.kt similarity index 97% rename from app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestViewModel.kt rename to app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestViewModel.kt index 8ecdc6a654..94ea6ad577 100644 --- a/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestViewModel.kt +++ b/app/src/debug/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestViewModel.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.components.settings.app.internal.conversation +package org.thoughtcrime.securesms.components.settings.app.internal.conversation.test import androidx.lifecycle.ViewModel import org.signal.paging.PagedData diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt index 0107dd3a9d..425f31830f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt @@ -613,9 +613,9 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter dividerPref() clickPref( - title = DSLSettingsText.from("Launch ConversationTestFragment"), + title = DSLSettingsText.from("Launch Conversation Test Springboard "), onClick = { - findNavController().safeNavigate(InternalSettingsFragmentDirections.actionInternalSettingsFragmentToInternalConversationTestFragment()) + findNavController().safeNavigate(InternalSettingsFragmentDirections.actionInternalSettingsFragmentToInternalConversationSpringboardFragment()) } ) diff --git a/app/src/main/res/layout/conversation_test_fragment.xml b/app/src/main/res/layout/conversation_test_fragment.xml index aad7d8e65f..b4f5e8e66c 100644 --- a/app/src/main/res/layout/conversation_test_fragment.xml +++ b/app/src/main/res/layout/conversation_test_fragment.xml @@ -2,6 +2,12 @@ ~ Copyright 2023 Signal Messenger, LLC ~ SPDX-License-Identifier: AGPL-3.0-only --> - \ No newline at end of file + android:layout_height="match_parent"> + + + diff --git a/app/src/main/res/navigation/app_settings.xml b/app/src/main/res/navigation/app_settings.xml index c16d3f962b..d2fffbd3fc 100644 --- a/app/src/main/res/navigation/app_settings.xml +++ b/app/src/main/res/navigation/app_settings.xml @@ -587,8 +587,8 @@ android:id="@+id/action_internalSettingsFragment_to_internalSvrPlaygroundFragment" app:destination="@id/internalSvrPlaygroundFragment" /> + android:id="@+id/action_internalSettingsFragment_to_internalConversationSpringboardFragment" + app:destination="@id/internalConversationSpringboardFragment" /> + + + + + diff --git a/app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardFragment.kt b/app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardFragment.kt new file mode 100644 index 0000000000..c3f2809a3c --- /dev/null +++ b/app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/springboard/InternalConversationSpringboardFragment.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2023 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.components.settings.app.internal.conversation + +import androidx.fragment.app.Fragment + +/** + * STUB + */ +class InternalConversationSpringboardFragment : Fragment() diff --git a/app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestFragment.kt b/app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt similarity index 100% rename from app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/InternalConversationTestFragment.kt rename to app/src/release/java/org/thoughtcrime/securesms/components/settings/app/internal/conversation/test/InternalConversationTestFragment.kt diff --git a/core-ui/src/main/java/org/signal/core/ui/Rows.kt b/core-ui/src/main/java/org/signal/core/ui/Rows.kt index e47814a52b..5aa8fdc9ea 100644 --- a/core-ui/src/main/java/org/signal/core/ui/Rows.kt +++ b/core-ui/src/main/java/org/signal/core/ui/Rows.kt @@ -133,6 +133,7 @@ object Rows { } else { Text( text = text, + color = foregroundTint, modifier = modifier .fillMaxWidth() .clickable(enabled = onClick != null, onClick = onClick ?: {})