package com.nextcloud.talk.activities import android.os.Bundle import android.util.Log import android.view.MenuItem 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.models.database.UserEntity import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_NAME import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USER_ENTITY import com.nextcloud.talk.viewmodels.SharedItemsViewModel class SharedItemsActivity : AppCompatActivity() { 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_MEDIA val roomToken = intent.getStringExtra(KEY_ROOM_TOKEN)!! val conversationName = intent.getStringExtra(KEY_CONVERSATION_NAME) val userEntity = intent.getParcelableExtra(KEY_USER_ENTITY)!! binding = ActivitySharedItemsBinding.inflate(layoutInflater) setSupportActionBar(binding.sharedItemsToolbar) setContentView(binding.root) DisplayUtils.applyColorToStatusBar( this, ResourcesCompat.getColor( resources, R.color.appbar, null ) ) DisplayUtils.applyColorToNavigationBar( this.window, ResourcesCompat.getColor(resources, R.color.bg_default, null) ) supportActionBar?.title = conversationName supportActionBar?.setDisplayHomeAsUpEnabled(true) initTabs() viewModel = ViewModelProvider( this, SharedItemsViewModel.Factory(userEntity, roomToken, currentTab) ).get(SharedItemsViewModel::class.java) viewModel.media.observe(this) { Log.d(TAG, "Items received: $it") val adapter = SharedItemsAdapter() 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) { currentTab = type viewModel.loadMediaItems(type) } private fun initTabs() { val tabMedia: TabLayout.Tab = binding.sharedItemsTabs.newTab() tabMedia.tag = TAB_MEDIA tabMedia.setText(R.string.shared_items_media) binding.sharedItemsTabs.addTab(tabMedia) val tabFile: TabLayout.Tab = binding.sharedItemsTabs.newTab() tabFile.tag = TAB_FILE tabFile.setText(R.string.shared_items_file) binding.sharedItemsTabs.addTab(tabFile) val tabAudio: TabLayout.Tab = binding.sharedItemsTabs.newTab() tabAudio.tag = TAB_AUDIO tabAudio.setText(R.string.shared_items_audio) binding.sharedItemsTabs.addTab(tabAudio) val tabVoice: TabLayout.Tab = binding.sharedItemsTabs.newTab() tabVoice.tag = TAB_VOICE tabVoice.setText(R.string.shared_items_voice) binding.sharedItemsTabs.addTab(tabVoice) // val tabLocation: TabLayout.Tab = binding.sharedItemsTabs.newTab() // tabLocation.tag = TAB_LOCATION // tabLocation.text = "location" // binding.sharedItemsTabs.addTab(tabLocation) // val tabDeckCard: TabLayout.Tab = binding.sharedItemsTabs.newTab() // tabDeckCard.tag = TAB_DECKCARD // tabDeckCard.text = "deckcard" // binding.sharedItemsTabs.addTab(tabDeckCard) val tabOther: TabLayout.Tab = binding.sharedItemsTabs.newTab() tabOther.tag = TAB_OTHER tabOther.setText(R.string.shared_items_other) binding.sharedItemsTabs.addTab(tabOther) binding.sharedItemsTabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { updateItems(tab.tag as String) } override fun onTabUnselected(tab: TabLayout.Tab) { // unused atm } override fun onTabReselected(tab: TabLayout.Tab) { // unused atm } }) } override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == android.R.id.home) { onBackPressed() true } else { super.onOptionsItemSelected(item) } } 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" } }