Crash fixes attempts

filterfix
Laurent 5 years ago
parent 37c23c7094
commit 7612fad0ca
  1. 33
      app/src/main/java/net/pokeranalytics/android/ui/activity/GraphActivity.kt
  2. 42
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/BaseActivity.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt
  4. 24
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BaseFragment.kt
  5. 3
      app/src/main/java/net/pokeranalytics/android/ui/modules/bankroll/BankrollFragment.kt
  6. 14
      app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarDetailsFragment.kt
  7. 6
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/GraphViewModel.kt
  8. 1
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportHolder.kt

@ -25,22 +25,29 @@ class GraphActivity : BaseActivity(), ViewModelHolder {
private var lineDataSets: List<LineDataSet>? = null private var lineDataSets: List<LineDataSet>? = null
private var barDataSets: List<BarDataSet>? = null private var barDataSets: List<BarDataSet>? = null
private var style: GraphFragment.Style = GraphFragment.Style.LINE private var style: GraphFragment.Style? = null
private var activityTitle: String? = null private var activityTitle: String? = null
/** /***
* Default constructor * Line graph constructor
*/ */
fun newInstance( fun newLineInstance(context: Context, lineDataSets: List<LineDataSet>, title: String? = null) {
context: Context, lineDataSets: List<LineDataSet>? = null,
barDataSets: List<BarDataSet>? = null,
style: GraphFragment.Style = GraphFragment.Style.LINE,
title: String? = null
) {
this.lineDataSets = lineDataSets this.lineDataSets = lineDataSets
this.style = GraphFragment.Style.LINE
this.activityTitle = title
val intent = Intent(context, GraphActivity::class.java)
context.startActivity(intent)
}
/***
* Bar graph constructor
*/
fun newBarInstance(context: Context, barDataSets: List<BarDataSet>, title: String? = null) {
this.barDataSets = barDataSets this.barDataSets = barDataSets
this.style = style this.style = GraphFragment.Style.BAR
this.activityTitle = title this.activityTitle = title
val intent = Intent(context, GraphActivity::class.java) val intent = Intent(context, GraphActivity::class.java)
context.startActivity(intent) context.startActivity(intent)
} }
@ -82,6 +89,12 @@ class GraphActivity : BaseActivity(), ViewModelHolder {
} }
} }
style?.let {
this.model.style = it
}
val style = style ?: this.model.style ?: throw PAIllegalStateException("Graph style not defined")
val fragmentTransaction = supportFragmentManager.beginTransaction() val fragmentTransaction = supportFragmentManager.beginTransaction()
val graphFragment = GraphFragment.newInstance(style) val graphFragment = GraphFragment.newInstance(style)
fragmentTransaction.add(R.id.container, graphFragment) fragmentTransaction.add(R.id.container, graphFragment)

@ -89,15 +89,12 @@ abstract class BaseActivity : AppCompatActivity() {
when (requestCode) { when (requestCode) {
PERMISSION_REQUEST_ACCESS_FINE_LOCATION -> { PERMISSION_REQUEST_ACCESS_FINE_LOCATION -> {
if (permissions.isNotEmpty() && permissions[0] == ACCESS_FINE_LOCATION if (permissions.isNotEmpty() && permissions[0] == ACCESS_FINE_LOCATION
&& grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
) {
permissionCallback?.invoke(true) permissionCallback?.invoke(true)
} else { } else {
permissionCallback?.invoke(false) permissionCallback?.invoke(false)
// permission denied, boo! Disable the
// functionality that depends on this permission.
// showMessage(getString(R.string.error));
} }
this.permissionCallback = null
} }
} }
@ -107,6 +104,7 @@ abstract class BaseActivity : AppCompatActivity() {
val allPermissionsPresent = permissions.all { request.permissions.contains(it) } val allPermissionsPresent = permissions.all { request.permissions.contains(it) }
val allGranted = grantResults.all { it == PackageManager.PERMISSION_GRANTED } val allGranted = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
request.callback.invoke(allPermissionsPresent && allGranted) request.callback.invoke(allPermissionsPresent && allGranted)
this.permissionRequest = null
} }
} }
@ -145,6 +143,14 @@ abstract class BaseActivity : AppCompatActivity() {
return ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED return ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
} }
/**
* Ask for app permission
*/
fun askForPermission(permissions: Array<String>, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) {
this.permissionRequest = PermissionRequest(permissions, permissionCallback, requestCode)
ActivityCompat.requestPermissions(this, permissions, requestCode)
}
/** /**
* Ask for location permission * Ask for location permission
*/ */
@ -155,24 +161,6 @@ abstract class BaseActivity : AppCompatActivity() {
) )
} }
/**
* Ask for places request
*/
// fun askForPlacesRequest(callback: ((success: Boolean, places: ArrayList<PlaceLikelihood>) -> Unit)?) {
// // Call findCurrentPlace and handle the response (first check that the user has granted permission).
// if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
// LocationManager(this).askForPlacesRequest(callback)
// } else {
// askForLocationPermission { granted ->
// if (granted) {
// LocationManager(this).askForPlacesRequest(callback)
// } else {
// callback?.invoke(false, ArrayList())
// }
// }
// }
// }
/** /**
* Find the nearest location from the user * Find the nearest location from the user
*/ */
@ -194,14 +182,6 @@ abstract class BaseActivity : AppCompatActivity() {
} }
} }
/**
* Ask for app permission
*/
fun askForPermission(permissions: Array<String>, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) {
this.permissionRequest = PermissionRequest(permissions, permissionCallback, requestCode)
ActivityCompat.requestPermissions(this, permissions, requestCode)
}
/** /**
* Find the current location * Find the current location
*/ */

@ -49,10 +49,8 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener {
/** /**
* Create new instance * Create new instance
*/ */
fun newInstance(style: Style = Style.LINE): GraphFragment { fun newInstance(style: Style): GraphFragment {
val fragment = GraphFragment() val fragment = GraphFragment()
// fragment.lineDataSetList = lineDataSets
// fragment.barDataSetList = barDataSets
val bundle = Bundle() val bundle = Bundle()
bundle.putSerializable(BundleKey.STYLE.value, style.ordinal) bundle.putSerializable(BundleKey.STYLE.value, style.ordinal)
fragment.arguments = bundle fragment.arguments = bundle

@ -64,18 +64,18 @@ abstract class BaseFragment : Fragment() {
*/ */
open fun onBackPressed() {} open fun onBackPressed() {}
/** // /**
* Ask for app permission // * Ask for app permission
*/ // */
fun askForPermission(permissions: Array<String>, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) { // fun askForPermission(permissions: Array<String>, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) {
val baseActivity= requireActivity() as BaseActivity // val baseActivity= requireActivity() as BaseActivity
baseActivity.askForPermission(permissions, requestCode, permissionCallback) // baseActivity.askForPermission(permissions, requestCode, permissionCallback)
} // }
//
fun askForPermission(permission: String, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) { // fun askForPermission(permission: String, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) {
val baseActivity= requireActivity() as BaseActivity // val baseActivity= requireActivity() as BaseActivity
baseActivity.askForPermission(arrayOf(permission), requestCode, permissionCallback) // baseActivity.askForPermission(arrayOf(permission), requestCode, permissionCallback)
} // }
/** /**
* Init UI * Init UI

@ -177,7 +177,8 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour
when (row) { when (row) {
is BankrollGraphRow -> { is BankrollGraphRow -> {
val lineDataSet = row.dataSet as LineDataSet val lineDataSet = row.dataSet as LineDataSet
GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll)) GraphActivity.newLineInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll))
// GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll))
} }
is BankrollRowRepresentable -> { is BankrollRowRepresentable -> {
Timber.d("BankrollFragment > onRowSelected > reportForBankroll") Timber.d("BankrollFragment > onRowSelected > reportForBankroll")

@ -26,7 +26,6 @@ import net.pokeranalytics.android.ui.activity.GraphActivity
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
import net.pokeranalytics.android.ui.fragment.GraphFragment
import net.pokeranalytics.android.ui.fragment.components.BaseFragment import net.pokeranalytics.android.ui.fragment.components.BaseFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
@ -143,15 +142,16 @@ class CalendarDetailsFragment : BaseFragment(), StaticRowRepresentableDataSource
if (report != null && stat != null) { if (report != null && stat != null) {
val title = row.title ?: stat.localizedTitle(requireContext()) val title = row.title ?: stat.localizedTitle(requireContext())
val dataSet = row.dataSet when (val dataSet = row.dataSet) {
when (dataSet) {
is LineDataSet-> { is LineDataSet-> {
GraphActivity.newInstance(requireContext(), listOf(dataSet), null, GraphActivity.newLineInstance(requireContext(), listOf(dataSet), title)
GraphFragment.Style.LINE, title) // GraphActivity.newInstance(requireContext(), listOf(dataSet), null,
// GraphFragment.Style.LINE, title)
} }
is BarDataSet -> { is BarDataSet -> {
GraphActivity.newInstance(requireContext(), null, listOf(dataSet), GraphActivity.newBarInstance(requireContext(), listOf(dataSet), title)
GraphFragment.Style.BAR, title) // GraphActivity.newInstance(requireContext(), null, listOf(dataSet),
// GraphFragment.Style.BAR, title)
} }
} }
} }

@ -6,6 +6,7 @@ import com.github.mikephil.charting.data.BarDataSet
import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.data.LineDataSet
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.ui.fragment.GraphFragment
import net.pokeranalytics.android.ui.graph.AxisFormatting import net.pokeranalytics.android.ui.graph.AxisFormatting
open class GraphViewModel : ViewModel(), GraphDataProvider { open class GraphViewModel : ViewModel(), GraphDataProvider {
@ -15,6 +16,11 @@ open class GraphViewModel : ViewModel(), GraphDataProvider {
*/ */
var title: String? = null var title: String? = null
/***
* The graph style
*/
var style: GraphFragment.Style? = null
/*** /***
* The displayed stat * The displayed stat
*/ */

@ -5,6 +5,7 @@ import com.github.mikephil.charting.data.BarDataSet
import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.data.LineDataSet
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.ui.fragment.GraphFragment
import net.pokeranalytics.android.ui.graph.AxisFormatting import net.pokeranalytics.android.ui.graph.AxisFormatting

Loading…
Cancel
Save