ref: 06f29d9d7dcc7db0fff0d16c8a02dbd490b8c603
app/src/main/java/xyz/apiote/bimba/czwek/search/LineGraphActivity.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
// SPDX-FileCopyrightText: Adam Evyčędo // // SPDX-License-Identifier: GPL-3.0-or-later package xyz.apiote.bimba.czwek.search import android.os.Bundle import android.util.Log import android.view.View import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.viewpager.widget.ViewPager import com.google.android.material.tabs.TabLayout import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import xyz.apiote.bimba.czwek.databinding.ActivityLineGraphBinding import xyz.apiote.bimba.czwek.repo.OnlineRepository import xyz.apiote.bimba.czwek.repo.TrafficResponseException import xyz.apiote.bimba.czwek.search.ui.SectionsPagerAdapter class LineGraphActivity : AppCompatActivity() { private lateinit var binding: ActivityLineGraphBinding private lateinit var sectionsPagerAdapter: SectionsPagerAdapter override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) binding = ActivityLineGraphBinding.inflate(layoutInflater) setContentView(binding.root) ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) v.updatePadding(top = insets.top, left = insets.left, right = insets.right) windowInsets } val lineName = intent.getStringExtra("lineName")!! val lineID = intent.getStringExtra("lineID")!! val feedID = intent.getStringExtra("feedID")!! binding.title.text = lineName getGraph(lineName, lineID, feedID) } private fun getGraph( lineName: String, lineID: String, feedID: String, ) { MainScope().launch { try { val repository = OnlineRepository() val line = repository.getLine(this@LineGraphActivity, feedID, lineName, lineID) line?.let { sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, it) val viewPager: ViewPager = binding.viewPager viewPager.adapter = sectionsPagerAdapter val tabs: TabLayout = binding.tabs // todo [optimisation] hangs before changing progress to graph tabs.setupWithViewPager(viewPager) binding.lineOverlay.visibility = View.GONE binding.viewPager.visibility = View.VISIBLE } } catch (e: TrafficResponseException) { showError(e.error) Log.w("Line", "$e") } } } private fun showError(e: xyz.apiote.bimba.czwek.api.Error) { binding.lineProgress.visibility = View.GONE binding.errorImage.visibility = View.VISIBLE binding.errorText.visibility = View.VISIBLE binding.errorText.text = getString(e.stringResource) binding.errorImage.setImageDrawable(AppCompatResources.getDrawable(this, e.imageResource)) } } |