package ani.dantotsu.media import android.annotation.SuppressLint import android.os.Bundle import android.util.TypedValue import android.view.View import android.view.ViewGroup import android.view.Window import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams import androidx.lifecycle.MutableLiveData import androidx.lifecycle.lifecycleScope import ani.dantotsu.R import ani.dantotsu.Refresh import ani.dantotsu.databinding.ActivityListBinding import ani.dantotsu.hideSystemBarsExtendView import ani.dantotsu.media.user.ListViewPagerAdapter import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class CalendarActivity : AppCompatActivity() { private lateinit var binding: ActivityListBinding private val scope = lifecycleScope private var selectedTabIdx = 1 private val model: OtherDetailsViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() binding = ActivityListBinding.inflate(layoutInflater) val typedValue = TypedValue() theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true) val primaryColor = typedValue.data val typedValue3 = TypedValue() theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue3, true) val primaryTextColor = typedValue3.data val typedValue4 = TypedValue() theme.resolveAttribute(com.google.android.material.R.attr.colorOutline, typedValue4, true) val secondaryTextColor = typedValue4.data window.statusBarColor = primaryColor window.navigationBarColor = primaryColor binding.listTabLayout.setBackgroundColor(primaryColor) binding.listAppBar.setBackgroundColor(primaryColor) binding.listTitle.setTextColor(primaryTextColor) binding.listTabLayout.setTabTextColors(secondaryTextColor, primaryTextColor) binding.listTabLayout.setSelectedTabIndicatorColor(primaryTextColor) if (!(PrefManager.getVal(PrefName.ImmersiveMode) as Boolean)) { this.window.statusBarColor = ContextCompat.getColor(this, R.color.nav_bg_inv) binding.root.fitsSystemWindows = true } else { binding.root.fitsSystemWindows = false requestWindowFeature(Window.FEATURE_NO_TITLE) hideSystemBarsExtendView() binding.settingsContainer.updateLayoutParams { topMargin = statusBarHeight } } setContentView(binding.root) binding.listTitle.setText(R.string.release_calendar) binding.listSort.visibility = View.GONE binding.random.visibility = View.GONE binding.listTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab?) { this@CalendarActivity.selectedTabIdx = tab?.position ?: 1 } override fun onTabUnselected(tab: TabLayout.Tab?) {} override fun onTabReselected(tab: TabLayout.Tab?) {} }) model.getCalendar().observe(this) { if (it != null) { binding.listProgressBar.visibility = View.GONE binding.listViewPager.adapter = ListViewPagerAdapter(it.size, true, this) val keys = it.keys.toList() val values = it.values.toList() val savedTab = this.selectedTabIdx TabLayoutMediator(binding.listTabLayout, binding.listViewPager) { tab, position -> tab.text = "${keys[position]} (${values[position].size})" }.attach() binding.listViewPager.setCurrentItem(savedTab, false) } } val live = Refresh.activity.getOrPut(this.hashCode()) { MutableLiveData(true) } live.observe(this) { if (it) { scope.launch { withContext(Dispatchers.IO) { model.loadCalendar() } live.postValue(false) } } } } }