srctree

Roee Hershberg parent ca834680 01c27033
Clean colorFromStatus methods

Remove duplicates of colorFromStatus methods by moving it to Util andintegrating that method inside colorByStatus which is nowcolorByContactStatus.

inlinesplit
atox/src/main/kotlin/ui/Util.kt added: 25, removed: 39, total 0
@@ -13,16 +13,15 @@ import ltd.evilcorp.core.vo.ConnectionStatus
import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.core.vo.UserStatus
 
internal fun colorByStatus(context: Context, contact: Contact): Int {
if (contact.connectionStatus == ConnectionStatus.None) return ContextCompat.getColor(
context,
R.color.statusOffline,
)
return when (contact.status) {
UserStatus.None -> ContextCompat.getColor(context, R.color.statusAvailable)
UserStatus.Away -> ContextCompat.getColor(context, R.color.statusAway)
UserStatus.Busy -> ContextCompat.getColor(context, R.color.statusBusy)
}
internal fun colorByContactStatus(context: Context, contact: Contact) =
if (contact.connectionStatus == ConnectionStatus.None)
ContextCompat.getColor(context, R.color.statusOffline)
else colorFromStatus(context, contact.status)
 
internal fun colorFromStatus(context: Context, status: UserStatus) = when (status) {
UserStatus.None -> ContextCompat.getColor(context, R.color.statusAvailable)
UserStatus.Away -> ContextCompat.getColor(context, R.color.statusAway)
UserStatus.Busy -> ContextCompat.getColor(context, R.color.statusBusy)
}
 
internal fun dpToPx(dp: Int, res: Resources): Int =
 
atox/src/main/kotlin/ui/chat/ChatFragment.kt added: 25, removed: 39, total 0
@@ -44,7 +44,7 @@ import ltd.evilcorp.atox.requireStringArg
import ltd.evilcorp.atox.truncated
import ltd.evilcorp.atox.ui.AvatarFactory
import ltd.evilcorp.atox.ui.BaseFragment
import ltd.evilcorp.atox.ui.colorByStatus
import ltd.evilcorp.atox.ui.colorByContactStatus
import ltd.evilcorp.atox.vmFactory
import ltd.evilcorp.core.vo.ConnectionStatus
import ltd.evilcorp.core.vo.FileTransfer
@@ -188,7 +188,7 @@ class ChatFragment : BaseFragment<FragmentChatBinding>(FragmentChatBinding::infl
else -> DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT).format(it.lastMessage)
}.lowercase(Locale.getDefault())
 
profileLayout.statusIndicator.setColorFilter(colorByStatus(requireContext(), it))
profileLayout.statusIndicator.setColorFilter(colorByContactStatus(requireContext(), it))
AvatarFactory(it).assignInto(profileLayout.profileImage)
 
if (it.draftMessage.isNotEmpty() && outgoingMessage.text.isEmpty()) {
 
atox/src/main/kotlin/ui/contact_profile/ContactProfileFragment.kt added: 25, removed: 39, total 0
@@ -16,7 +16,7 @@ import ltd.evilcorp.atox.requireStringArg
import ltd.evilcorp.atox.ui.AvatarFactory
import ltd.evilcorp.atox.ui.BaseFragment
import ltd.evilcorp.atox.ui.chat.CONTACT_PUBLIC_KEY
import ltd.evilcorp.atox.ui.colorByStatus
import ltd.evilcorp.atox.ui.colorByContactStatus
import ltd.evilcorp.atox.vmFactory
import ltd.evilcorp.domain.tox.PublicKey
 
@@ -42,7 +42,7 @@ class ContactProfileFragment : BaseFragment<FragmentContactProfileBinding>(Fragm
 
headerMainText.text = contact.name
AvatarFactory(contact).assignInto(profileLayout.profileImage)
profileLayout.statusIndicator.setColorFilter(colorByStatus(requireContext(), contact))
profileLayout.statusIndicator.setColorFilter(colorByContactStatus(requireContext(), contact))
 
contactPublicKey.text = contact.publicKey
contactName.text = contact.name
 
atox/src/main/kotlin/ui/contactlist/ContactAdapter.kt added: 25, removed: 39, total 0
@@ -17,7 +17,7 @@ import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.databinding.ContactListViewItemBinding
import ltd.evilcorp.atox.databinding.FriendRequestItemBinding
import ltd.evilcorp.atox.ui.AvatarFactory
import ltd.evilcorp.atox.ui.colorByStatus
import ltd.evilcorp.atox.ui.colorByContactStatus
import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.core.vo.FriendRequest
 
@@ -111,7 +111,7 @@ class ContactAdapter(
vh.statusMessage.setTextColor(vh.lastMessage.currentTextColor)
}
}
vh.status.setColorFilter(colorByStatus(context, this))
vh.status.setColorFilter(colorByContactStatus(context, this))
AvatarFactory(this).assignInto(vh.image)
vh.unreadIndicator.visibility = if (hasUnreadMessages) {
View.VISIBLE
 
atox/src/main/kotlin/ui/contactlist/ContactListFragment.kt added: 25, removed: 39, total 0
@@ -22,7 +22,6 @@ import androidx.activity.addCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.os.bundleOf
import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat
@@ -40,13 +39,13 @@ import ltd.evilcorp.atox.truncated
import ltd.evilcorp.atox.ui.BaseFragment
import ltd.evilcorp.atox.ui.ReceiveShareDialog
import ltd.evilcorp.atox.ui.chat.CONTACT_PUBLIC_KEY
import ltd.evilcorp.atox.ui.colorFromStatus
import ltd.evilcorp.atox.ui.friend_request.FRIEND_REQUEST_PUBLIC_KEY
import ltd.evilcorp.atox.vmFactory
import ltd.evilcorp.core.vo.ConnectionStatus
import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.core.vo.FriendRequest
import ltd.evilcorp.core.vo.User
import ltd.evilcorp.core.vo.UserStatus
import ltd.evilcorp.domain.tox.PublicKey
import ltd.evilcorp.domain.tox.ToxSaveStatus
 
@@ -75,12 +74,6 @@ class ContactListFragment :
viewModel.saveToxBackupTo(dest)
}
 
private fun colorFromStatus(status: UserStatus) = when (status) {
UserStatus.None -> ContextCompat.getColor(requireContext(), R.color.statusAvailable)
UserStatus.Away -> ContextCompat.getColor(requireContext(), R.color.statusAway)
UserStatus.Busy -> ContextCompat.getColor(requireContext(), R.color.statusBusy)
}
 
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
val v = super.onCreateView(inflater, container, savedInstanceState)
_navHeader = NavHeaderContactListBinding.bind(binding.navView.getHeaderView(0))
@@ -110,7 +103,7 @@ class ContactListFragment :
profileStatusMessage.text = user.statusMessage
 
if (user.online()) {
statusIndicator.setColorFilter(colorFromStatus(user.status))
statusIndicator.setColorFilter(colorFromStatus(requireContext(), user.status))
} else {
statusIndicator.setColorFilter(R.color.statusOffline)
}
 
atox/src/main/kotlin/ui/user_profile/UserProfileFragment.kt added: 25, removed: 39, total 0
@@ -18,7 +18,6 @@ import android.widget.EditText
import android.widget.ImageView
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService
import androidx.core.graphics.scale
import androidx.core.view.ViewCompat
@@ -33,6 +32,7 @@ import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.databinding.FragmentUserProfileBinding
import ltd.evilcorp.atox.ui.BaseFragment
import ltd.evilcorp.atox.ui.StatusDialog
import ltd.evilcorp.atox.ui.colorFromStatus
import ltd.evilcorp.atox.ui.dpToPx
import ltd.evilcorp.atox.vmFactory
import ltd.evilcorp.core.vo.UserStatus
@@ -47,12 +47,6 @@ class UserProfileFragment : BaseFragment<FragmentUserProfileBinding>(FragmentUse
private val vm: UserProfileViewModel by viewModels { vmFactory }
private lateinit var currentStatus: UserStatus
 
private fun colorFromStatus(status: UserStatus) = when (status) {
UserStatus.None -> ContextCompat.getColor(requireContext(), R.color.statusAvailable)
UserStatus.Away -> ContextCompat.getColor(requireContext(), R.color.statusAway)
UserStatus.Busy -> ContextCompat.getColor(requireContext(), R.color.statusBusy)
}
 
override fun onViewCreated(view: View, savedInstanceState: Bundle?) = binding.run {
ViewCompat.setOnApplyWindowInsetsListener(view) { _, compat ->
val insets = compat.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime())
@@ -73,7 +67,7 @@ class UserProfileFragment : BaseFragment<FragmentUserProfileBinding>(FragmentUse
 
userName.text = user.name
userStatusMessage.text = user.statusMessage
userStatus.setColorFilter(colorFromStatus(user.status))
userStatus.setColorFilter(colorFromStatus(requireContext(), user.status))
}
 
userToxId.text = vm.toxId.string()