Merge branch 'dev' of gitlab.com:stax-river/poker-analytics into dev

dev
Laurent 7 years ago
commit b76c85b64b
  1. 24
      app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  3. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt
  4. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  5. 17
      app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt
  6. 31
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt

@ -5,35 +5,33 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.FiltersFragment import net.pokeranalytics.android.ui.fragment.FiltersFragment
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
import net.pokeranalytics.android.ui.interfaces.FilterableType
class FiltersActivity : PokerAnalyticsActivity() { class FiltersActivity : PokerAnalyticsActivity() {
enum class IntentKey(val keyName: String) { enum class IntentKey(val keyName: String) {
FILTER_ID("FILTER_ID"); FILTER_ID("FILTER_ID"),
FILTERABLE_TYPE("FILTERABLE_TYPE"),
;
} }
private lateinit var fragment: FiltersFragment private lateinit var fragment: FiltersFragment
companion object { companion object {
/**
* Default constructor
*/
fun newInstance(context: Context, filterId: String? = null) {
context.startActivity(getIntent(context, filterId))
}
/** /**
* Create a new instance for result * Create a new instance for result
*/ */
fun newInstanceForResult(fragment: Fragment, filterId: String? = null) { fun newInstanceForResult(fragment: Fragment, filterId: String? = null, currentFilterable: FilterableType) {
fragment.startActivityForResult(getIntent(fragment.requireContext(), filterId), FilterActivityRequestCode.SELECT_FILTER.ordinal) fragment.startActivityForResult(getIntent(fragment.requireContext(), filterId, currentFilterable), FilterActivityRequestCode.SELECT_FILTER.ordinal)
} }
private fun getIntent(context:Context, filterId:String?) : Intent { private fun getIntent(context:Context, filterId:String?, currentFilterable: FilterableType) : Intent {
val intent = Intent(context, FiltersActivity::class.java) val intent = Intent(context, FiltersActivity::class.java)
intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal)
filterId?.let { filterId?.let {
intent.putExtra(IntentKey.FILTER_ID.keyName, it) intent.putExtra(IntentKey.FILTER_ID.keyName, it)
} }
@ -59,11 +57,13 @@ class FiltersActivity : PokerAnalyticsActivity() {
val fragmentManager = supportFragmentManager val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction() val fragmentTransaction = fragmentManager.beginTransaction()
val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName) val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName)
val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0)
val filterableType = FilterableType.values()[ordinal]
fragment = FiltersFragment() fragment = FiltersFragment()
fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.add(R.id.container, fragment)
fragmentTransaction.commit() fragmentTransaction.commit()
fragment.setData(filterId) fragment.setData(filterId, filterableType)
} }

@ -214,7 +214,8 @@ class HomeActivity : PokerAnalyticsActivity() {
val fragment = supportFragmentManager.fragments[viewPager.currentItem] val fragment = supportFragmentManager.fragments[viewPager.currentItem]
if (fragment is FilterHandler) { if (fragment is FilterHandler) {
fragment.manageFilters((fragment))
fragment.manageFilters(fragment = fragment)
} }
} }
} }

@ -11,6 +11,7 @@ import kotlinx.android.synthetic.main.fragment_editable_data.*
import kotlinx.android.synthetic.main.fragment_filters.view.* import kotlinx.android.synthetic.main.fragment_filters.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.FilterDetailsActivity import net.pokeranalytics.android.ui.activity.FilterDetailsActivity
import net.pokeranalytics.android.ui.activity.FiltersActivity import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
@ -18,6 +19,7 @@ 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.components.RealmFragment import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.interfaces.FilterableType
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow
import timber.log.Timber import timber.log.Timber
@ -38,6 +40,8 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
private var rows: ArrayList<RowRepresentable> = ArrayList() private var rows: ArrayList<RowRepresentable> = ArrayList()
private var filterMenu: Menu? = null private var filterMenu: Menu? = null
private var primaryKey: String? = null private var primaryKey: String? = null
private lateinit var filterableType: FilterableType
private var selectedRow: RowRepresentable? = null private var selectedRow: RowRepresentable? = null
private var isUpdating = false private var isUpdating = false
@ -165,7 +169,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
} }
rows.clear() rows.clear()
rows.addAll(FilterCategoryRow.values()) rows.addAll(FilterCategoryRow.values(this.filterableType))
this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) this.rowRepresentableAdapter = RowRepresentableAdapter(this, this)
this.recyclerView.adapter = rowRepresentableAdapter this.recyclerView.adapter = rowRepresentableAdapter
@ -232,8 +236,9 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
/** /**
* Set fragment data * Set fragment data
*/ */
fun setData(primaryKey: String?) { fun setData(primaryKey: String?, filterableType: FilterableType) {
this.primaryKey = primaryKey this.primaryKey = primaryKey
this.filterableType = filterableType
} }
} }

@ -25,6 +25,7 @@ import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.activity.FiltersActivity import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
import net.pokeranalytics.android.ui.interfaces.FilterHandler import net.pokeranalytics.android.ui.interfaces.FilterHandler
import net.pokeranalytics.android.ui.interfaces.FilterableType
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.StatRow import net.pokeranalytics.android.ui.view.rowrepresentable.StatRow
@ -104,6 +105,8 @@ class StatisticsFragment : TableReportFragment(), FilterHandler {
this.sessionsChanged() this.sessionsChanged()
} }
override var currentFilterable: FilterableType = FilterableType.SESSION
// Business // Business
/** /**

@ -7,6 +7,7 @@ import io.realm.Realm
import io.realm.kotlin.where import io.realm.kotlin.where
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.activity.FiltersActivity import net.pokeranalytics.android.ui.activity.FiltersActivity
@ -19,6 +20,15 @@ enum class FilterActivityRequestCode {
; ;
} }
enum class FilterableType {
ALL,
SESSION,
TRANSACTION,
BANKROLL,
HAND_HISTORY,
;
}
interface FilterHandler { interface FilterHandler {
fun createFilter() fun createFilter()
@ -38,6 +48,9 @@ interface FilterHandler {
} }
} }
var currentFilterable: FilterableType
/** /**
* Manage filters * Manage filters
*/ */
@ -69,9 +82,9 @@ interface FilterHandler {
.setItems(choices.toTypedArray()) { _, which -> .setItems(choices.toTypedArray()) { _, which ->
Timber.d("Click on $which") Timber.d("Click on $which")
when (which) { when (which) {
0 -> FiltersActivity.newInstanceForResult(fragment = fragment) 0 -> FiltersActivity.newInstanceForResult(fragment = fragment, currentFilterable = currentFilterable)
1 -> DataListActivity.newSelectInstance(fragment, LiveData.FILTER.ordinal) 1 -> DataListActivity.newSelectInstance(fragment, LiveData.FILTER.ordinal)
2 -> FiltersActivity.newInstanceForResult(fragment = fragment, filterId = filterId) 2 -> FiltersActivity.newInstanceForResult(fragment = fragment, filterId = filterId, currentFilterable = currentFilterable)
3 -> { 3 -> {
Preferences.removeActiveFilterId(context) Preferences.removeActiveFilterId(context)
removeFilter() removeFilter()

@ -1,6 +1,13 @@
package net.pokeranalytics.android.ui.view.rowrepresentable package net.pokeranalytics.android.ui.view.rowrepresentable
import io.realm.Realm
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.interfaces.FilterableType
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
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow.* import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow.*
@ -20,6 +27,30 @@ enum class FilterCategoryRow(override val resId: Int?, override val viewType: In
//PLAYERS(R.string.players), //PLAYERS(R.string.players),
; ;
companion object {
fun values(filterableType:FilterableType): ArrayList<FilterCategoryRow> {
val list = arrayListOf<FilterCategoryRow>()
for (category in values()) {
if (category.isAllowed(filterableType)) {
list.add(category)
}
}
return list
}
}
fun isAllowed(filterableType:FilterableType): Boolean {
return when (filterableType) {
FilterableType.SESSION -> { true }
else -> {
when (this) {
DATE -> true
else -> false
}
}
}
}
val filterElements: List<RowRepresentable> val filterElements: List<RowRepresentable>
get() { get() {
return filterSectionRows.flatMap { return filterSectionRows.flatMap {

Loading…
Cancel
Save