show items other than "media" as list (WIP)

extract hardcoding

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-04-28 12:16:31 +02:00
parent fa90155195
commit 0e75337caf
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
3 changed files with 44 additions and 17 deletions

View File

@ -3,15 +3,15 @@ package com.nextcloud.talk.activities
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.MenuItem import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.SharedItemsAdapter import com.nextcloud.talk.adapters.SharedItemsAdapter
import com.nextcloud.talk.databinding.ActivitySharedItemsBinding import com.nextcloud.talk.databinding.ActivitySharedItemsBinding
import com.nextcloud.talk.databinding.ItemReactionsTabBinding
import com.nextcloud.talk.models.database.UserEntity import com.nextcloud.talk.models.database.UserEntity
import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_NAME import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_NAME
@ -20,13 +20,16 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USER_ENTITY
import com.nextcloud.talk.viewmodels.SharedItemsViewModel import com.nextcloud.talk.viewmodels.SharedItemsViewModel
class SharedItemsActivity : AppCompatActivity() { class SharedItemsActivity : AppCompatActivity() {
companion object {
private val TAG = SharedItemsActivity::class.simpleName private lateinit var binding: ActivitySharedItemsBinding
} private lateinit var viewModel: SharedItemsViewModel
private lateinit var currentTab: String
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
currentTab = TAB_AUDIO
val roomToken = intent.getStringExtra(KEY_ROOM_TOKEN)!! val roomToken = intent.getStringExtra(KEY_ROOM_TOKEN)!!
val conversationName = intent.getStringExtra(KEY_CONVERSATION_NAME) val conversationName = intent.getStringExtra(KEY_CONVERSATION_NAME)
val userEntity = intent.getParcelableExtra<UserEntity>(KEY_USER_ENTITY)!! val userEntity = intent.getParcelableExtra<UserEntity>(KEY_USER_ENTITY)!!
@ -53,7 +56,7 @@ class SharedItemsActivity : AppCompatActivity() {
viewModel = ViewModelProvider( viewModel = ViewModelProvider(
this, this,
SharedItemsViewModel.Factory(userEntity, roomToken, "audio") SharedItemsViewModel.Factory(userEntity, roomToken, currentTab)
).get(SharedItemsViewModel::class.java) ).get(SharedItemsViewModel::class.java)
viewModel.media.observe(this) { viewModel.media.observe(this) {
@ -62,46 +65,64 @@ class SharedItemsActivity : AppCompatActivity() {
adapter.items = it.items adapter.items = it.items
adapter.authHeader = it.authHeader adapter.authHeader = it.authHeader
binding.imageRecycler.adapter = adapter binding.imageRecycler.adapter = adapter
if (currentTab == "media") {
val layoutManager = GridLayoutManager(this, 4)
binding.imageRecycler.layoutManager = layoutManager
} else {
val layoutManager = LinearLayoutManager(this)
layoutManager.orientation = LinearLayoutManager.VERTICAL
binding.imageRecycler.layoutManager = layoutManager
}
adapter.notifyDataSetChanged() adapter.notifyDataSetChanged()
} }
} }
fun updateItems(type: String){ fun updateItems(type: String) {
currentTab = type
viewModel.loadMediaItems(type) viewModel.loadMediaItems(type)
} }
private fun initTabs() { private fun initTabs() {
val tabAudio: TabLayout.Tab = binding.sharedItemsTabs.newTab() val tabAudio: TabLayout.Tab = binding.sharedItemsTabs.newTab()
tabAudio.tag = TAB_AUDIO
tabAudio.text = "audio" tabAudio.text = "audio"
binding.sharedItemsTabs.addTab(tabAudio) binding.sharedItemsTabs.addTab(tabAudio)
// val tabDeckcard: TabLayout.Tab = binding.sharedItemsTabs.newTab() // val tabDeckCard: TabLayout.Tab = binding.sharedItemsTabs.newTab()
// tabDeckcard.text = "deckcard" // tabDeckCard.tag = TAB_DECKCARD
// binding.sharedItemsTabs.addTab(tabDeckcard) // tabDeckCard.text = "deckcard"
// binding.sharedItemsTabs.addTab(tabDeckCard)
val tabFile: TabLayout.Tab = binding.sharedItemsTabs.newTab() val tabFile: TabLayout.Tab = binding.sharedItemsTabs.newTab()
tabFile.tag = TAB_FILE
tabFile.text = "file" tabFile.text = "file"
binding.sharedItemsTabs.addTab(tabFile) binding.sharedItemsTabs.addTab(tabFile)
// val tabLocation: TabLayout.Tab = binding.sharedItemsTabs.newTab() // val tabLocation: TabLayout.Tab = binding.sharedItemsTabs.newTab()
// tabLocation.tag = TAB_LOCATION
// tabLocation.text = "location" // tabLocation.text = "location"
// binding.sharedItemsTabs.addTab(tabLocation) // binding.sharedItemsTabs.addTab(tabLocation)
val tabMedia: TabLayout.Tab = binding.sharedItemsTabs.newTab() val tabMedia: TabLayout.Tab = binding.sharedItemsTabs.newTab()
tabMedia.tag = TAB_MEDIA
tabMedia.text = "media" tabMedia.text = "media"
binding.sharedItemsTabs.addTab(tabMedia) binding.sharedItemsTabs.addTab(tabMedia)
val tabVoice: TabLayout.Tab = binding.sharedItemsTabs.newTab() val tabVoice: TabLayout.Tab = binding.sharedItemsTabs.newTab()
tabVoice.tag = TAB_VOICE
tabVoice.text = "voice" tabVoice.text = "voice"
binding.sharedItemsTabs.addTab(tabVoice) binding.sharedItemsTabs.addTab(tabVoice)
val tabOther: TabLayout.Tab = binding.sharedItemsTabs.newTab() val tabOther: TabLayout.Tab = binding.sharedItemsTabs.newTab()
tabOther.tag = TAB_OTHER
tabOther.text = "other" tabOther.text = "other"
binding.sharedItemsTabs.addTab(tabOther) binding.sharedItemsTabs.addTab(tabOther)
binding.sharedItemsTabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { binding.sharedItemsTabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) { override fun onTabSelected(tab: TabLayout.Tab) {
updateItems(tab.text.toString()) updateItems(tab.tag as String)
} }
override fun onTabUnselected(tab: TabLayout.Tab) { override fun onTabUnselected(tab: TabLayout.Tab) {
@ -121,7 +142,14 @@ class SharedItemsActivity : AppCompatActivity() {
} }
} }
private lateinit var binding: ActivitySharedItemsBinding companion object {
private val TAG = SharedItemsActivity::class.simpleName
private lateinit var viewModel: SharedItemsViewModel const val TAB_AUDIO = "audio"
const val TAB_FILE = "file"
const val TAB_MEDIA = "media"
const val TAB_VOICE = "voice"
const val TAB_LOCATION = "location"
const val TAB_DECKCARD = "deckcard"
const val TAB_OTHER = "other"
}
} }

View File

@ -16,7 +16,7 @@ import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import retrofit2.Response import retrofit2.Response
class SharedItemsViewModel(private val repository: SharedItemsRepository, val initialType: String) : ViewModel() { class SharedItemsViewModel(private val repository: SharedItemsRepository, private val initialType: String) : ViewModel() {
private val _media: MutableLiveData<SharedMediaItems> by lazy { private val _media: MutableLiveData<SharedMediaItems> by lazy {
MutableLiveData<SharedMediaItems>().also { MutableLiveData<SharedMediaItems>().also {

View File

@ -63,8 +63,7 @@
android:id="@+id/image_recycler" android:id="@+id/image_recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:spanCount="4"
tools:listitem="@layout/attachment_item" /> tools:listitem="@layout/attachment_item" />
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>