mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-10 22:34:15 +01:00
show items other than "media" as list (WIP)
extract hardcoding Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
fa90155195
commit
0e75337caf
@ -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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user