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

View File

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