From d181dcf837d3bc1b011154529d0c1322d5aa9210 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Mon, 4 Mar 2024 18:26:12 -0600 Subject: [PATCH] feat: open stat in new window --- app/src/main/AndroidManifest.xml | 2 + .../java/ani/dantotsu/profile/ChartBuilder.kt | 2 +- .../java/ani/dantotsu/profile/ChartItem.kt | 10 ++++- .../ani/dantotsu/profile/ProfileActivity.kt | 22 +++++------ .../dantotsu/profile/SingleStatActivity.kt | 38 +++++++++++++++++++ .../ani/dantotsu/profile/StatsFragment.kt | 28 +++++++------- .../main/res/layout/activity_single_stat.xml | 14 +++++++ 7 files changed, 88 insertions(+), 28 deletions(-) create mode 100644 app/src/main/java/ani/dantotsu/profile/SingleStatActivity.kt create mode 100644 app/src/main/res/layout/activity_single_stat.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e08f108e..f3c65e3c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -122,6 +122,8 @@ android:name=".media.CalendarActivity" android:parentActivityName=".MainActivity" /> + () { + private val aaOptions: AAOptions, + private val activity: ProfileActivity): BindableItem() { private lateinit var binding: ItemChartBinding override fun bind(viewBinding: ItemChartBinding, position: Int) { binding = viewBinding binding.typeText.text = title binding.chartView.aa_drawChartWithChartOptions(aaOptions) + binding.openButton.setOnClickListener { + SingleStatActivity.chartOptions = aaOptions + activity.startActivity( + Intent(activity, SingleStatActivity::class.java) + ) + } } override fun getLayout(): Int { diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt index 6e556449..0d30b49c 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt @@ -1,42 +1,36 @@ package ani.dantotsu.profile import android.annotation.SuppressLint -import android.content.Intent import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.viewpager2.adapter.FragmentStateAdapter -import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.api.Query import ani.dantotsu.databinding.ActivityProfileBinding import ani.dantotsu.initActivity import ani.dantotsu.loadImage -import ani.dantotsu.media.Media -import ani.dantotsu.media.MediaDetailsActivity -import ani.dantotsu.media.user.ListActivity import ani.dantotsu.navBarHeight import ani.dantotsu.others.ImageViewDialog import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName -import ani.dantotsu.snackString import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager +import ani.dantotsu.toast import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import nl.joery.animatedbottombar.AnimatedBottomBar -class ProfileActivity : AppCompatActivity(){ +class ProfileActivity : AppCompatActivity() { private lateinit var binding: ActivityProfileBinding private var selected: Int = 0 private lateinit var navBar: AnimatedBottomBar @@ -61,13 +55,16 @@ class ProfileActivity : AppCompatActivity(){ val respond = Anilist.query.getUserProfile(userid) val user = respond?.data?.user if (user == null) { - snackString("User not found") + toast("User not found") finish() return@launch } withContext(Dispatchers.Main) { - binding.profileViewPager.updateLayoutParams { bottomMargin = navBarHeight } - binding.profileViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, user) + binding.profileViewPager.updateLayoutParams { + bottomMargin = navBarHeight + } + binding.profileViewPager.adapter = + ViewPagerAdapter(supportFragmentManager, lifecycle, user) navBar.visibility = View.VISIBLE navBar.selectTabAt(selected) navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { @@ -81,7 +78,7 @@ class ProfileActivity : AppCompatActivity(){ binding.profileViewPager.setCurrentItem(selected, true) } }) - val userLevel = intent.getStringExtra("username")?: "" + val userLevel = intent.getStringExtra("username") ?: "" binding.profileProgressBar.visibility = View.GONE binding.profileTopContainer.visibility = View.VISIBLE @@ -131,6 +128,7 @@ class ProfileActivity : AppCompatActivity(){ } super.onResume() } + private class ViewPagerAdapter( fragmentManager: FragmentManager, lifecycle: Lifecycle, diff --git a/app/src/main/java/ani/dantotsu/profile/SingleStatActivity.kt b/app/src/main/java/ani/dantotsu/profile/SingleStatActivity.kt new file mode 100644 index 00000000..337d2c86 --- /dev/null +++ b/app/src/main/java/ani/dantotsu/profile/SingleStatActivity.kt @@ -0,0 +1,38 @@ +package ani.dantotsu.profile + +import android.content.pm.ActivityInfo +import android.os.Bundle +import android.util.TypedValue +import androidx.appcompat.app.AppCompatActivity +import ani.dantotsu.databinding.ActivitySingleStatBinding +import ani.dantotsu.initActivity +import ani.dantotsu.themes.ThemeManager +import ani.dantotsu.toast +import com.github.aachartmodel.aainfographics.aachartcreator.AAOptions + +class SingleStatActivity : AppCompatActivity() +{ + private lateinit var binding: ActivitySingleStatBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + ThemeManager(this).applyTheme() + initActivity(this) + binding = ActivitySingleStatBinding.inflate(layoutInflater) + setContentView(binding.root) + val chartOptions = chartOptions + if (chartOptions != null) { + val typedvalue = TypedValue() + theme.resolveAttribute(android.R.attr.windowBackground, typedvalue, true) + chartOptions.chart?.backgroundColor = typedvalue.data + binding.chartView.aa_drawChartWithChartOptions(chartOptions) + requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE + } else { + toast("No chart data") + finish() + } + } + + companion object { + var chartOptions: AAOptions? = null // I cba to pass this through an intent + } +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt b/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt index 7049383f..d42b85f0 100644 --- a/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt @@ -144,7 +144,7 @@ class StatsFragment() : names, values ) - adapter.add(ChartItem("Format", formatChart)) + adapter.add(ChartItem("Format", formatChart, activity)) } } @@ -177,7 +177,7 @@ class StatsFragment() : names, values ) - adapter.add(ChartItem("Status", statusChart)) + adapter.add(ChartItem("Status", statusChart, activity)) } } @@ -211,7 +211,7 @@ class StatsFragment() : values, xAxisName = "Score", ) - adapter.add(ChartItem("Score", scoreChart)) + adapter.add(ChartItem("Score", scoreChart, activity)) } } @@ -247,7 +247,7 @@ class StatsFragment() : values, xAxisName = "Length", ) - adapter.add(ChartItem("Length", lengthChart)) + adapter.add(ChartItem("Length", lengthChart, activity)) } } @@ -283,7 +283,7 @@ class StatsFragment() : values, xAxisName = "Year", ) - adapter.add(ChartItem("Release Year", releaseYearChart)) + adapter.add(ChartItem("Release Year", releaseYearChart, activity)) } } @@ -317,7 +317,7 @@ class StatsFragment() : values, xAxisName = "Year", ) - adapter.add(ChartItem("Start Year", startYearChart)) + adapter.add(ChartItem("Start Year", startYearChart, activity)) } } @@ -347,13 +347,13 @@ class StatsFragment() : AAChartType.Areaspline, statType, type, - names.take(15), - values.take(15), + names, + values, xAxisName = "Genre", polar = true, categories = names ) - adapter.add(ChartItem("Genre", genreChart)) + adapter.add(ChartItem("Genre", genreChart, activity)) } } @@ -393,7 +393,7 @@ class StatsFragment() : scrollPos = 0.0f ) tagChart.yAxis = AAYAxis().min(min).max(max).tickInterval(if (max > 100) 20 else 10) - adapter.add(ChartItem("Tag", tagChart)) + adapter.add(ChartItem("Tag", tagChart, activity)) } } @@ -430,7 +430,7 @@ class StatsFragment() : categories = names, scrollPos = null ) - adapter.add(ChartItem("Country", countryChart)) + adapter.add(ChartItem("Country", countryChart, activity)) } } @@ -467,7 +467,7 @@ class StatsFragment() : categories = names, scrollPos = 0.0f ) - adapter.add(ChartItem("Voice Actor", voiceActorsChart)) + adapter.add(ChartItem("Voice Actor", voiceActorsChart, activity)) } } @@ -504,7 +504,7 @@ class StatsFragment() : categories = names, scrollPos = 0.0f ) - adapter.add(ChartItem("Staff", staffChart)) + adapter.add(ChartItem("Staff", staffChart, activity)) } } @@ -541,7 +541,7 @@ class StatsFragment() : categories = names, scrollPos = null ) - adapter.add(ChartItem("Studio", studioChart)) + adapter.add(ChartItem("Studio", studioChart, activity)) } } diff --git a/app/src/main/res/layout/activity_single_stat.xml b/app/src/main/res/layout/activity_single_stat.xml new file mode 100644 index 00000000..edc8321f --- /dev/null +++ b/app/src/main/res/layout/activity_single_stat.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file