|
|
|
@ -1,10 +1,11 @@ |
|
|
|
package net.pokeranalytics.android.ui.fragment |
|
|
|
package net.pokeranalytics.android.ui.fragment |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity |
|
|
|
import android.content.Intent |
|
|
|
import android.content.Intent |
|
|
|
import android.os.Bundle |
|
|
|
import android.os.Bundle |
|
|
|
import android.view.* |
|
|
|
import android.view.* |
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
import io.realm.RealmObject |
|
|
|
import io.realm.kotlin.where |
|
|
|
import kotlinx.android.synthetic.main.fragment_editable_data.* |
|
|
|
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 |
|
|
|
@ -16,6 +17,8 @@ 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.PokerAnalyticsFragment |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment |
|
|
|
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.rowrepresentable.CustomizableRowRepresentable |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow |
|
|
|
import timber.log.Timber |
|
|
|
import timber.log.Timber |
|
|
|
|
|
|
|
|
|
|
|
@ -26,18 +29,18 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
const val REQUEST_CODE_FILTER_DETAILS = 100 |
|
|
|
const val REQUEST_CODE_FILTER_DETAILS = 100 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
private val categories = FilterCategoryRow.values() |
|
|
|
lateinit var item: RealmObject |
|
|
|
|
|
|
|
lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
|
|
|
|
private lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private var currentFilter: Filter? = null |
|
|
|
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 var selectedRow: RowRepresentable? = null |
|
|
|
private var selectedRow: RowRepresentable? = null |
|
|
|
|
|
|
|
private var isUpdating = false |
|
|
|
private var filter: Filter? = null |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var isUpdating = false |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
|
|
|
return inflater.inflate(R.layout.fragment_filters, container, false) |
|
|
|
return inflater.inflate(R.layout.fragment_filters, container, false) |
|
|
|
@ -52,9 +55,26 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { |
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { |
|
|
|
super.onActivityResult(requestCode, resultCode, data) |
|
|
|
super.onActivityResult(requestCode, resultCode, data) |
|
|
|
|
|
|
|
|
|
|
|
if (requestCode == REQUEST_CODE_FILTER_DETAILS) { |
|
|
|
if (requestCode == REQUEST_CODE_FILTER_DETAILS && resultCode == Activity.RESULT_OK) { |
|
|
|
|
|
|
|
|
|
|
|
Timber.d("onActivityResult: $requestCode") |
|
|
|
Timber.d("onActivityResult: $requestCode") |
|
|
|
|
|
|
|
if (data != null && data.hasExtra(FilterDetailsActivity.IntentKey.FILTER_ID.keyName)) { |
|
|
|
|
|
|
|
val filterId = data.getStringExtra(FilterDetailsActivity.IntentKey.FILTER_ID.keyName) |
|
|
|
|
|
|
|
Timber.d("Updated filter: ${filterId}") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: Improve that |
|
|
|
|
|
|
|
rows.clear() |
|
|
|
|
|
|
|
for (category in categories) { |
|
|
|
|
|
|
|
var filtersSelected = "" |
|
|
|
|
|
|
|
currentFilter?.countBy(category)?.let { nbFilters -> |
|
|
|
|
|
|
|
if (nbFilters > 0) { |
|
|
|
|
|
|
|
filtersSelected = nbFilters.toString() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
rows.add(CustomizableRowRepresentable(RowViewType.TITLE_VALUE_ARROW, category.resId, value = filtersSelected, isSelectable = true)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
rowRepresentableAdapter.notifyDataSetChanged() |
|
|
|
|
|
|
|
|
|
|
|
// TODO: Update the selected row here... |
|
|
|
// TODO: Update the selected row here... |
|
|
|
selectedRow?.let { |
|
|
|
selectedRow?.let { |
|
|
|
@ -92,18 +112,16 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
|
|
|
|
|
|
|
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { |
|
|
|
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { |
|
|
|
super.onRowSelected(position, row, fromAction) |
|
|
|
super.onRowSelected(position, row, fromAction) |
|
|
|
|
|
|
|
|
|
|
|
if (row is FilterCategoryRow) { |
|
|
|
|
|
|
|
selectedRow = row |
|
|
|
selectedRow = row |
|
|
|
FilterDetailsActivity.newInstanceForResult(this, row.ordinal, REQUEST_CODE_FILTER_DETAILS) |
|
|
|
currentFilter?.id?.let { filterId -> |
|
|
|
|
|
|
|
FilterDetailsActivity.newInstanceForResult(this, filterId, categories[position].ordinal, REQUEST_CODE_FILTER_DETAILS) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//TODO |
|
|
|
//TODO |
|
|
|
/* |
|
|
|
/* |
|
|
|
override fun stringForRow(row: RowRepresentable): String { |
|
|
|
override fun stringForRow(row: RowRepresentable): String { |
|
|
|
return this.filter?.numberOfElementIn(row as FilterCategoryRow).toString() |
|
|
|
return this.currentFilter?.numberOfElementIn(row as FilterCategoryRow).toString() |
|
|
|
} |
|
|
|
} |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
@ -120,6 +138,8 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) |
|
|
|
parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) |
|
|
|
setHasOptionsMenu(true) |
|
|
|
setHasOptionsMenu(true) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.appBar.toolbar.title = getString(R.string.filter) |
|
|
|
|
|
|
|
|
|
|
|
val viewManager = LinearLayoutManager(requireContext()) |
|
|
|
val viewManager = LinearLayoutManager(requireContext()) |
|
|
|
|
|
|
|
|
|
|
|
recyclerView.apply { |
|
|
|
recyclerView.apply { |
|
|
|
@ -133,9 +153,32 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun initData() { |
|
|
|
private fun initData() { |
|
|
|
|
|
|
|
|
|
|
|
this.appBar.toolbar.title = getString(R.string.filter) |
|
|
|
val realm = getRealm() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: Remove that |
|
|
|
|
|
|
|
val filters = realm.where<Filter>().findAll() |
|
|
|
|
|
|
|
Timber.d("Filters: ${filters.size}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
primaryKey?.let { |
|
|
|
|
|
|
|
currentFilter = Filter.getFilterBydId(realm, it) |
|
|
|
|
|
|
|
} ?: run { |
|
|
|
|
|
|
|
realm.beginTransaction() |
|
|
|
|
|
|
|
currentFilter = Filter.newInstance(realm) |
|
|
|
|
|
|
|
realm.commitTransaction() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rows.clear() |
|
|
|
|
|
|
|
for (category in categories) { |
|
|
|
|
|
|
|
var filtersSelected = "" |
|
|
|
|
|
|
|
currentFilter?.countBy(category)?.let { nbFilters -> |
|
|
|
|
|
|
|
if (nbFilters > 0) { |
|
|
|
|
|
|
|
filtersSelected = nbFilters.toString() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
rows.add(CustomizableRowRepresentable(RowViewType.TITLE_VALUE_ARROW, category.resId, value = filtersSelected, isSelectable = true)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rows.addAll(FilterCategoryRow.values()) |
|
|
|
//rows.addAll(FilterCategoryRow.values()) |
|
|
|
|
|
|
|
|
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) |
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) |
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
@ -155,7 +198,7 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun saveData() { |
|
|
|
private fun saveData() { |
|
|
|
|
|
|
|
|
|
|
|
// TODO: Save the filter object here |
|
|
|
// TODO: Save the currentFilter object here |
|
|
|
// Maybe we don't need to do anything because the object is already up to date |
|
|
|
// Maybe we don't need to do anything because the object is already up to date |
|
|
|
|
|
|
|
|
|
|
|
finishActivityWithResult("") |
|
|
|
finishActivityWithResult("") |
|
|
|
@ -166,7 +209,7 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun deleteData() { |
|
|
|
private fun deleteData() { |
|
|
|
|
|
|
|
|
|
|
|
// TODO: Delete the filter object here |
|
|
|
// TODO: Delete the currentFilter object here |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|