update fragments to viewBinding

kmm
Razmig Sarkissian 5 years ago
parent 47635c2ee7
commit caa64c3e8e
  1. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt
  2. 20
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt
  3. 28
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt
  4. 49
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt
  5. 33
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt
  6. 24
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  7. 28
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  8. 21
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  9. 55
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SubscriptionFragment.kt
  10. 27
      app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt
  11. 25
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComparisonReportFragment.kt
  12. 51
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt
  13. 35
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt
  14. 24
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/TableReportFragment.kt

@ -39,8 +39,6 @@ class ComparisonChartFragment : BaseFragment(), StaticRowRepresentableDataSource
private lateinit var viewPagerAdapter: ComparisonChartPagerAdapter private lateinit var viewPagerAdapter: ComparisonChartPagerAdapter
private var comparisonChartMenu: Menu? = null private var comparisonChartMenu: Menu? = null
private var _binding: FragmentComparisonChartBinding? = null private var _binding: FragmentComparisonChartBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!! private val binding get() = _binding!!
override fun onDestroyView() { override fun onDestroyView() {
@ -53,7 +51,6 @@ class ComparisonChartFragment : BaseFragment(), StaticRowRepresentableDataSource
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FragmentComparisonChartBinding.inflate(inflater, container, false) _binding = FragmentComparisonChartBinding.inflate(inflater, container, false)
return binding.root return binding.root
//return inflater.inflate(R.layout.fragment_comparison_chart, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

@ -8,8 +8,8 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_data_list.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.databinding.FragmentCurrenciesBinding
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
@ -71,10 +71,20 @@ class CurrenciesFragment : BaseFragment(), StaticRowRepresentableDataSource, Row
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
} }
private var _binding: FragmentCurrenciesBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Life Cycle
return inflater.inflate(R.layout.fragment_currencies, container, false)
} override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FragmentCurrenciesBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -120,7 +130,7 @@ class CurrenciesFragment : BaseFragment(), StaticRowRepresentableDataSource, Row
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
val dataListAdapter = RowRepresentableAdapter(this, this) val dataListAdapter = RowRepresentableAdapter(this, this)
recyclerView.apply { binding.recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = dataListAdapter adapter = dataListAdapter

@ -13,9 +13,8 @@ import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.highlight.Highlight import com.github.mikephil.charting.highlight.Highlight
import com.github.mikephil.charting.interfaces.datasets.IBarLineScatterCandleBubbleDataSet import com.github.mikephil.charting.interfaces.datasets.IBarLineScatterCandleBubbleDataSet
import com.github.mikephil.charting.listener.OnChartValueSelectedListener import com.github.mikephil.charting.listener.OnChartValueSelectedListener
import kotlinx.android.synthetic.main.fragment_graph.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentGraphBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.interfaces.ObjectIdentifier import net.pokeranalytics.android.model.interfaces.ObjectIdentifier
import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.ui.fragment.components.RealmFragment
@ -65,10 +64,21 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener {
private var chartView: BarLineChartBase<*>? = null private var chartView: BarLineChartBase<*>? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { private var _binding: FragmentGraphBinding? = null
super.onCreateView(inflater, container, savedInstanceState) private val binding get() = _binding!!
return inflater.inflate(R.layout.fragment_graph, container, false)
} // Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentGraphBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -94,7 +104,7 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener {
else -> LegendView(requireContext()) else -> LegendView(requireContext())
} }
this.legendContainer.addView(this.legendView) this.binding.legendContainer.addView(this.legendView)
} }
fun reload(style: Style) { fun reload(style: Style) {
@ -109,7 +119,7 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener {
*/ */
private fun loadGraph() { private fun loadGraph() {
this.chartContainer.removeAllViews() this.binding.chartContainer.removeAllViews()
this.chartView = when (this.style) { this.chartView = when (this.style) {
Style.LINE, Style.MULTILINE -> { Style.LINE, Style.MULTILINE -> {
@ -165,7 +175,7 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener {
} }
} }
this.chartContainer.addView(this.chartView) this.binding.chartContainer.addView(this.chartView)
this.chartView?.setStyle(false, this.graphDataProvider.axisFormatting, requireContext()) this.chartView?.setStyle(false, this.graphDataProvider.axisFormatting, requireContext())

@ -6,12 +6,11 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.fragment_import.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.databinding.FragmentImportBinding
import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.util.csv.CSVImporter import net.pokeranalytics.android.util.csv.CSVImporter
import net.pokeranalytics.android.util.csv.ImportDelegate import net.pokeranalytics.android.util.csv.ImportDelegate
@ -19,7 +18,6 @@ import timber.log.Timber
import java.io.InputStream import java.io.InputStream
import java.text.NumberFormat import java.text.NumberFormat
import java.util.* import java.util.*
import kotlin.coroutines.CoroutineContext
class ImportFragment : RealmFragment(), ImportDelegate { class ImportFragment : RealmFragment(), ImportDelegate {
@ -30,7 +28,24 @@ class ImportFragment : RealmFragment(), ImportDelegate {
private lateinit var inputStream: InputStream private lateinit var inputStream: InputStream
private lateinit var importer: CSVImporter private lateinit var importer: CSVImporter
fun setData(path: String) { private var _binding: FragmentImportBinding? = null
private val binding get() = _binding!!
// Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentImportBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
fun setData(path: String) {
this.filePath = path this.filePath = path
} }
@ -38,11 +53,6 @@ class ImportFragment : RealmFragment(), ImportDelegate {
this.inputStream = inputStream this.inputStream = inputStream
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_import, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -53,15 +63,20 @@ class ImportFragment : RealmFragment(), ImportDelegate {
private fun initUI() { private fun initUI() {
this.imported.text = requireContext().getString(R.string.imported) val imported = binding.imported
this.total.text = requireContext().getString(R.string.total) val total = binding.total
val save = binding.save
val cancel = binding.cancel
imported.text = requireContext().getString(R.string.imported)
total.text = requireContext().getString(R.string.total)
this.save.isEnabled = false save.isEnabled = false
this.save.setOnClickListener { save.setOnClickListener {
this.end() this.end()
} }
this.cancel.setOnClickListener { cancel.setOnClickListener {
this.cancel() this.cancel()
this.end() this.end()
} }
@ -128,7 +143,7 @@ class ImportFragment : RealmFragment(), ImportDelegate {
private fun importDidFinish() { private fun importDidFinish() {
this.save.isEnabled = true binding.save.isEnabled = true
} }
@ -141,8 +156,8 @@ class ImportFragment : RealmFragment(), ImportDelegate {
// ImportDelegate // ImportDelegate
override fun parsingCountUpdate(importedCount: Int, totalCount: Int) { override fun parsingCountUpdate(importedCount: Int, totalCount: Int) {
this.counter.text = this.numberFormatter.format(importedCount) binding.counter.text = this.numberFormatter.format(importedCount)
this.totalCounter.text = this.numberFormatter.format(totalCount) binding.totalCounter.text = this.numberFormatter.format(totalCount)
} }
} }

@ -6,10 +6,10 @@ import android.os.Bundle
import android.view.* import android.view.*
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_report_creation.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentReportCreationBinding
import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.CustomFieldCriteria import net.pokeranalytics.android.model.CustomFieldCriteria
import net.pokeranalytics.android.model.realm.CustomField import net.pokeranalytics.android.model.realm.CustomField
@ -37,10 +37,21 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
private var currentRows: List<RowRepresentable> = listOf() private var currentRows: List<RowRepresentable> = listOf()
private var reportCreationMenu: Menu? = null private var reportCreationMenu: Menu? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { private var _binding: FragmentReportCreationBinding? = null
super.onCreateView(inflater, container, savedInstanceState) private val binding get() = _binding!!
return inflater.inflate(R.layout.fragment_report_creation, container, false)
} // Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentReportCreationBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -94,13 +105,13 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
//this.optionsAdapter.setHasStableIds(true) //this.optionsAdapter.setHasStableIds(true)
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
recyclerView.apply { binding.recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = optionsAdapter adapter = optionsAdapter
} }
this.next.setOnClickListener { binding.next.setOnClickListener {
if (assistant.nextEnabled) { if (assistant.nextEnabled) {
this.assistant.nextStep() this.assistant.nextStep()
@ -126,9 +137,9 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
*/ */
private fun updateUIWithCurrentStep() { private fun updateUIWithCurrentStep() {
this.next.visibility = if (this.assistant.nextButtonShouldAppear) View.VISIBLE else View.GONE binding.next.visibility = if (this.assistant.nextButtonShouldAppear) View.VISIBLE else View.GONE
this.next.text = requireContext().getString(this.assistant.nextButtonTitleResId) binding.next.text = requireContext().getString(this.assistant.nextButtonTitleResId)
this.next.isEnabled = this.assistant.nextEnabled binding.next.isEnabled = this.assistant.nextEnabled
this.reportCreationMenu?.findItem(R.id.add)?.isVisible = this.assistant.addButtonShouldAppear this.reportCreationMenu?.findItem(R.id.add)?.isVisible = this.assistant.addButtonShouldAppear
val rows = mutableListOf<RowRepresentable>() val rows = mutableListOf<RowRepresentable>()
@ -198,7 +209,7 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR
if (newStep) { if (newStep) {
this.updateUIWithCurrentStep() this.updateUIWithCurrentStep()
} else { } else {
this.next.isEnabled = this.assistant.nextEnabled binding.next.isEnabled = this.assistant.nextEnabled
this.optionsAdapter.notifyDataSetChanged() this.optionsAdapter.notifyDataSetChanged()
} }

@ -10,7 +10,6 @@ import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmResults import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_data_list.*
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@ -18,6 +17,7 @@ import kotlinx.coroutines.launch
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentReportsBinding
import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.Criteria
import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.model.interfaces.Deletable import net.pokeranalytics.android.model.interfaces.Deletable
@ -59,13 +59,21 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
} }
} }
private var _binding: FragmentReportsBinding? = null
private val binding get() = _binding!!
// Life Cycle // Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState) super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_reports, container, false) _binding = FragmentReportsBinding.inflate(inflater, container, false)
} return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -119,13 +127,13 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
recyclerView.apply { binding.recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = dataListAdapter adapter = dataListAdapter
} }
this.addButton.setOnClickListener { binding.addButton.setOnClickListener {
ReportCreationActivity.newInstanceForResult(this, requireContext()) ReportCreationActivity.newInstanceForResult(this, requireContext())
} }

@ -15,9 +15,9 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.android.billingclient.api.Purchase import com.android.billingclient.api.Purchase
import com.google.android.play.core.review.ReviewManagerFactory import com.google.android.play.core.review.ReviewManagerFactory
import io.realm.Realm import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.BuildConfig import net.pokeranalytics.android.BuildConfig
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.databinding.FragmentSettingsBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.realm.Currency import net.pokeranalytics.android.model.realm.Currency
@ -71,7 +71,24 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
private lateinit var settingsAdapterRow: RowRepresentableAdapter private lateinit var settingsAdapterRow: RowRepresentableAdapter
override fun onCreate(savedInstanceState: Bundle?) { private var _binding: FragmentSettingsBinding? = null
private val binding get() = _binding!!
// Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentSettingsBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
AppGuard.registerListener(this) AppGuard.registerListener(this)
} }
@ -81,11 +98,6 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
AppGuard.unregisterListener(this) AppGuard.unregisterListener(this)
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_settings, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initData() initData()
@ -227,7 +239,7 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
settingsAdapterRow = RowRepresentableAdapter(this, this) settingsAdapterRow = RowRepresentableAdapter(this, this)
recyclerView.apply { binding.recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = settingsAdapterRow adapter = settingsAdapterRow

@ -15,6 +15,8 @@ import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputableGroup import net.pokeranalytics.android.calculus.ComputableGroup
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentGraphBinding
import net.pokeranalytics.android.databinding.FragmentStatsBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.filter.QueryCondition
@ -46,12 +48,21 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
} }
} }
// Life Cycle private var _binding: FragmentStatsBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Life Cycle
super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_stats, container, false) override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
} super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentStatsBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)

@ -22,8 +22,8 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import com.android.billingclient.api.* import com.android.billingclient.api.*
import kotlinx.android.synthetic.main.fragment_subscription.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.databinding.FragmentSubscriptionBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.utils.CrashLogging import net.pokeranalytics.android.model.utils.CrashLogging
import net.pokeranalytics.android.ui.extensions.px import net.pokeranalytics.android.ui.extensions.px
@ -55,7 +55,23 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
private var selectedProduct: SkuDetails? = null private var selectedProduct: SkuDetails? = null
private var showSessionMessage = false private var showSessionMessage = false
override fun onCreate(savedInstanceState: Bundle?) { private var _binding: FragmentSubscriptionBinding? = null
private val binding get() = _binding!!
// Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FragmentSubscriptionBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val cm = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val cm = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
@ -78,10 +94,6 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
} }
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_subscription, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initData() initData()
@ -99,6 +111,11 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
private fun initUI() { private fun initUI() {
val title = binding.title
val message = binding.message
val pager = binding.pager
val purchase = binding.purchase
val pageIndicator = binding.pageIndicator
val upgradeString = requireContext().getString(R.string.pro_upgrade) val upgradeString = requireContext().getString(R.string.pro_upgrade)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@ -119,25 +136,25 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
} }
} }
this.title.text = ssb title.text = ssb
} else { } else {
this.title.text = upgradeString title.text = upgradeString
} }
if (showSessionMessage) { if (showSessionMessage) {
this.message.text = getString(R.string.iap_session_message) message.text = getString(R.string.iap_session_message)
} }
// Pager // Pager
// The pager adapter, which provides the pages to the view pager widget. // The pager adapter, which provides the pages to the view pager widget.
this.pagerAdapter = ScreenSlidePagerAdapter(parentFragmentManager) this.pagerAdapter = ScreenSlidePagerAdapter(parentFragmentManager)
this.pager.adapter = pagerAdapter pager.adapter = pagerAdapter
this.pager.addOnPageChangeListener(this) pager.addOnPageChangeListener(this)
this.purchase.isEnabled = false purchase.isEnabled = false
this.purchase.setOnClickListener { purchase.setOnClickListener {
this.selectedProduct?.let { this.selectedProduct?.let {
AppGuard.initiatePurchase(this.requireActivity(), it) AppGuard.initiatePurchase(this.requireActivity(), it)
@ -146,13 +163,13 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
} }
} }
val count = this.pager.adapter?.count ?: 0 val count = pager.adapter?.count ?: 0
for (i in 1..count) { for (i in 1..count) {
val view = View(requireContext()) val view = View(requireContext())
view.background = requireContext().getDrawable(R.drawable.circle_green) view.background = requireContext().getDrawable(R.drawable.circle_green)
val layoutParam = LinearLayout.LayoutParams(8.px, 8.px) val layoutParam = LinearLayout.LayoutParams(8.px, 8.px)
layoutParam.setMargins(6.px) layoutParam.setMargins(6.px)
this.pageIndicator.addView(view, layoutParam) pageIndicator.addView(view, layoutParam)
} }
this.updatePagerIndicators(0) this.updatePagerIndicators(0)
@ -210,10 +227,10 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
private fun updateUI() { private fun updateUI() {
this.selectedProduct?.let { this.selectedProduct?.let {
this.purchase.isEnabled = true binding.purchase.isEnabled = true
val perYearString = requireContext().getString(R.string.year_subscription) val perYearString = requireContext().getString(R.string.year_subscription)
val formattedPrice = it.price + " / " + perYearString val formattedPrice = it.price + " / " + perYearString
this.price.text = formattedPrice binding.price.text = formattedPrice
var freeTrialDays = 30 // initial, should be more, no less var freeTrialDays = 30 // initial, should be more, no less
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@ -226,7 +243,7 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
} }
val formattedFreeTrial = val formattedFreeTrial =
"$freeTrialDays " + requireContext().getString(R.string.days) + " " + requireContext().getString(R.string.free_trial) "$freeTrialDays " + requireContext().getString(R.string.days) + " " + requireContext().getString(R.string.free_trial)
this.freetrial.text = formattedFreeTrial binding.freetrial.text = formattedFreeTrial
} ?: run { } ?: run {
Toast.makeText(requireContext(), R.string.contact_support, Toast.LENGTH_LONG).show() Toast.makeText(requireContext(), R.string.contact_support, Toast.LENGTH_LONG).show()
} }
@ -261,7 +278,7 @@ class SubscriptionFragment : BaseFragment(), SkuDetailsResponseListener, Purchas
} }
private fun updatePagerIndicators(position: Int) { private fun updatePagerIndicators(position: Int) {
this.pageIndicator.children.forEachIndexed { index, view -> binding.pageIndicator.children.forEachIndexed { index, view ->
val drawable = view.background val drawable = view.background
when (drawable) { when (drawable) {
is GradientDrawable -> { is GradientDrawable -> {

@ -7,8 +7,7 @@ import android.view.ViewGroup
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import io.realm.RealmResults import io.realm.RealmResults
import io.realm.kotlin.where import io.realm.kotlin.where
import kotlinx.android.synthetic.main.fragment_top_10.* import net.pokeranalytics.android.databinding.FragmentTop10Binding
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
@ -43,10 +42,21 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta
private var currentTab: Tab = Tab.CASH_GAMES private var currentTab: Tab = Tab.CASH_GAMES
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { private var _binding: FragmentTop10Binding? = null
super.onCreateView(inflater, container, savedInstanceState) private val binding get() = _binding!!
return inflater.inflate(R.layout.fragment_top_10, container, false)
} // Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentTop10Binding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -59,7 +69,10 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta
*/ */
private fun initUI() { private fun initUI() {
dataListAdapter = RowRepresentableAdapter(this, this) val recyclerView = binding.recyclerView
val tabs = binding.tabs
dataListAdapter = RowRepresentableAdapter(this, this)
recyclerView.adapter = dataListAdapter recyclerView.adapter = dataListAdapter
setDisplayHomeAsUpEnabled(true) setDisplayHomeAsUpEnabled(true)

@ -5,8 +5,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import kotlinx.android.synthetic.main.fragment_report_details.* import net.pokeranalytics.android.databinding.FragmentReportDetailsBinding
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.adapter.ReportPagerAdapter import net.pokeranalytics.android.ui.adapter.ReportPagerAdapter
class ComparisonReportFragment : AbstractReportFragment() { class ComparisonReportFragment : AbstractReportFragment() {
@ -21,10 +20,21 @@ class ComparisonReportFragment : AbstractReportFragment() {
} }
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { private var _binding: FragmentReportDetailsBinding? = null
super.onCreateView(inflater, container, savedInstanceState) private val binding get() = _binding!!
return inflater.inflate(R.layout.fragment_report_details, container, false)
} // Life Cycle
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentReportDetailsBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -36,6 +46,9 @@ class ComparisonReportFragment : AbstractReportFragment() {
*/ */
private fun initUI() { private fun initUI() {
val viewPager = binding.viewPager
val tabs = binding.tabs
viewPager.adapter = ReportPagerAdapter(requireContext(), requireActivity().supportFragmentManager, this.reportViewModel) viewPager.adapter = ReportPagerAdapter(requireContext(), requireActivity().supportFragmentManager, this.reportViewModel)
// setDisplayHomeAsUpEnabled(true) // setDisplayHomeAsUpEnabled(true)

@ -7,7 +7,6 @@ import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_composable_table_report.*
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async import kotlinx.coroutines.async
@ -17,6 +16,7 @@ import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.ComputableGroup import net.pokeranalytics.android.calculus.ComputableGroup
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentComposableTableReportBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.ui.activity.components.ReportActivity import net.pokeranalytics.android.ui.activity.components.ReportActivity
@ -39,34 +39,43 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab
// override val coroutineContext: CoroutineContext // override val coroutineContext: CoroutineContext
// get() = Dispatchers.Main // get() = Dispatchers.Main
private var rowRepresentables: ArrayList<RowRepresentable> = ArrayList() companion object {
/**
* Create new instance
*/
fun newInstance(report: Report? = null): ComposableTableReportFragment {
val fragment = ComposableTableReportFragment()
fragment.report = report
val bundle = Bundle()
fragment.arguments = bundle
return fragment
}
}
private var rowRepresentables: ArrayList<RowRepresentable> = ArrayList()
private var statsAdapter: RowRepresentableAdapter? = null private var statsAdapter: RowRepresentableAdapter? = null
var report: Report? = null var report: Report? = null
private var hasComputationInProgress: Boolean = false private var hasComputationInProgress: Boolean = false
companion object { private var _binding: FragmentComposableTableReportBinding? = null
private val binding get() = _binding!!
/**
* Create new instance
*/
fun newInstance(report: Report? = null): ComposableTableReportFragment {
val fragment = ComposableTableReportFragment()
fragment.report = report
val bundle = Bundle()
fragment.arguments = bundle
return fragment
}
}
// Life Cycle // Life Cycle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onDestroyView() {
super.onCreateView(inflater, container, savedInstanceState) super.onDestroyView()
return inflater.inflate(R.layout.fragment_composable_table_report, container, false) _binding = null
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentComposableTableReportBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -126,7 +135,7 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab
open fun initUI() { open fun initUI() {
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
recyclerView.apply { binding.recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = statsAdapter adapter = statsAdapter

@ -11,7 +11,6 @@ import com.github.mikephil.charting.data.LineDataSet
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup
import io.realm.Realm import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_progress_report.*
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -24,6 +23,7 @@ import net.pokeranalytics.android.calculus.AggregationType
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.databinding.FragmentProgressReportBinding
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.model.combined
import net.pokeranalytics.android.ui.extensions.ChipGroupExtension import net.pokeranalytics.android.ui.extensions.ChipGroupExtension
@ -57,10 +57,21 @@ class ProgressReportFragment : AbstractReportFragment() {
private var reports: MutableMap<AggregationType, Report> = EnumMap(AggregationType::class.java) private var reports: MutableMap<AggregationType, Report> = EnumMap(AggregationType::class.java)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { private var _binding: FragmentProgressReportBinding? = null
super.onCreateView(inflater, container, savedInstanceState) private val binding get() = _binding!!
return inflater.inflate(R.layout.fragment_progress_report, container, false)
} // Life Cycle
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentProgressReportBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -72,6 +83,7 @@ class ProgressReportFragment : AbstractReportFragment() {
*/ */
private fun initUI() { private fun initUI() {
val chipGroup = binding.chipGroup
val fragmentManager = parentActivity?.supportFragmentManager val fragmentManager = parentActivity?.supportFragmentManager
val fragmentTransaction = fragmentManager?.beginTransaction() val fragmentTransaction = fragmentManager?.beginTransaction()
this.graphFragment = GraphFragment.newInstance(GraphFragment.Style.LINE) this.graphFragment = GraphFragment.newInstance(GraphFragment.Style.LINE)
@ -96,14 +108,14 @@ class ProgressReportFragment : AbstractReportFragment() {
chip.text = requireContext().getString(type.resId) chip.text = requireContext().getString(type.resId)
chip.chipStartPadding = 8f.px chip.chipStartPadding = 8f.px
chip.chipEndPadding = 8f.px chip.chipEndPadding = 8f.px
this.chipGroup.addView(chip) chipGroup.addView(chip)
} }
this.chipGroup.isVisible = this.reportViewModel.showAggregationChoices chipGroup.isVisible = this.reportViewModel.showAggregationChoices
this.chipGroup.isSingleSelection = true chipGroup.isSingleSelection = true
this.chipGroup.check(0) chipGroup.check(0)
this.chipGroup.setOnCheckedChangeListener(object : ChipGroupExtension.SingleSelectionOnCheckedListener() { chipGroup.setOnCheckedChangeListener(object : ChipGroupExtension.SingleSelectionOnCheckedListener() {
override fun onCheckedChanged(group: ChipGroup, checkedId: Int) { override fun onCheckedChanged(group: ChipGroup, checkedId: Int) {
super.onCheckedChanged(group, checkedId) super.onCheckedChanged(group, checkedId)
@ -140,6 +152,9 @@ class ProgressReportFragment : AbstractReportFragment() {
*/ */
private fun launchStatComputation(aggregationType: AggregationType) { private fun launchStatComputation(aggregationType: AggregationType) {
val graphContainer = binding.graphContainer
val progressBar = binding.progressBar
graphContainer.hideWithAnimation() graphContainer.hideWithAnimation()
progressBar.showWithAnimation() progressBar.showWithAnimation()

@ -5,11 +5,10 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.databinding.FragmentTableReportBinding
class TableReportFragment : AbstractReportFragment() { class TableReportFragment : AbstractReportFragment() {
private lateinit var tableReportFragment: ComposableTableReportFragment
companion object { companion object {
fun newInstance(): TableReportFragment { fun newInstance(): TableReportFragment {
@ -20,10 +19,23 @@ class TableReportFragment : AbstractReportFragment() {
} }
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { private lateinit var tableReportFragment: ComposableTableReportFragment
super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_table_report, container, false) private var _binding: FragmentTableReportBinding? = null
} private val binding get() = _binding!!
// Life Cycle
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
_binding = FragmentTableReportBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)

Loading…
Cancel
Save