|
|
|
@ -1,6 +1,7 @@ |
|
|
|
package net.pokeranalytics.android.ui.fragment |
|
|
|
package net.pokeranalytics.android.ui.fragment |
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity |
|
|
|
import android.app.Activity |
|
|
|
|
|
|
|
import android.app.Activity.RESULT_OK |
|
|
|
import android.content.Intent |
|
|
|
import android.content.Intent |
|
|
|
import android.os.Bundle |
|
|
|
import android.os.Bundle |
|
|
|
import android.view.* |
|
|
|
import android.view.* |
|
|
|
@ -11,14 +12,13 @@ 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.ui.activity.FilterDetailsActivity |
|
|
|
import net.pokeranalytics.android.ui.activity.FilterDetailsActivity |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.activity.FiltersActivity |
|
|
|
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity |
|
|
|
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity |
|
|
|
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.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 |
|
|
|
|
|
|
|
|
|
|
|
@ -29,13 +29,12 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
const val REQUEST_CODE_FILTER_DETAILS = 100 |
|
|
|
const val REQUEST_CODE_FILTER_DETAILS = 100 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private val categories = FilterCategoryRow.values() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
private lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
private lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
private lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
private var currentFilter: Filter? = null |
|
|
|
private var currentFilter: Filter? = null |
|
|
|
|
|
|
|
private var filterCopy: 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 |
|
|
|
@ -57,26 +56,14 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
|
|
|
|
|
|
|
if (requestCode == REQUEST_CODE_FILTER_DETAILS && resultCode == Activity.RESULT_OK) { |
|
|
|
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)) { |
|
|
|
if (data != null && data.hasExtra(FilterDetailsActivity.IntentKey.FILTER_ID.keyName)) { |
|
|
|
val filterId = data.getStringExtra(FilterDetailsActivity.IntentKey.FILTER_ID.keyName) |
|
|
|
val filterId = data.getStringExtra(FilterDetailsActivity.IntentKey.FILTER_ID.keyName) |
|
|
|
Timber.d("Updated filter: ${filterId}") |
|
|
|
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... |
|
|
|
|
|
|
|
selectedRow?.let { |
|
|
|
selectedRow?.let { |
|
|
|
rowRepresentableAdapter.refreshRow(it) |
|
|
|
rowRepresentableAdapter.refreshRow(it) |
|
|
|
} |
|
|
|
} |
|
|
|
@ -91,17 +78,17 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onBackPressed() { |
|
|
|
override fun onBackPressed() { |
|
|
|
super.onBackPressed() |
|
|
|
if (isUpdating) { |
|
|
|
|
|
|
|
cancelUpdates() |
|
|
|
//TODO: Cancel changes on the Filter object |
|
|
|
} else { |
|
|
|
|
|
|
|
deleteFilter() |
|
|
|
finishActivityWithResult("") |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem?): Boolean { |
|
|
|
override fun onOptionsItemSelected(item: MenuItem?): Boolean { |
|
|
|
when (item!!.itemId) { |
|
|
|
when (item!!.itemId) { |
|
|
|
R.id.save -> saveData() |
|
|
|
R.id.save -> validUpdates() |
|
|
|
R.id.delete -> deleteData() |
|
|
|
R.id.delete -> deleteFilter() |
|
|
|
} |
|
|
|
} |
|
|
|
return true |
|
|
|
return true |
|
|
|
} |
|
|
|
} |
|
|
|
@ -110,25 +97,27 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
return rows |
|
|
|
return rows |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun stringForRow(row: RowRepresentable): String { |
|
|
|
|
|
|
|
// Return the number of selected filters for this category |
|
|
|
|
|
|
|
var selectedFilters = "" |
|
|
|
|
|
|
|
if (row is FilterCategoryRow) { |
|
|
|
|
|
|
|
currentFilter?.countBy(row)?.let { nbFilters -> |
|
|
|
|
|
|
|
if (nbFilters > 0) { |
|
|
|
|
|
|
|
selectedFilters = nbFilters.toString() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return selectedFilters |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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) |
|
|
|
selectedRow = row |
|
|
|
selectedRow = row |
|
|
|
currentFilter?.id?.let { filterId -> |
|
|
|
currentFilter?.id?.let { filterId -> |
|
|
|
FilterDetailsActivity.newInstanceForResult(this, filterId, categories[position].ordinal, REQUEST_CODE_FILTER_DETAILS) |
|
|
|
FilterDetailsActivity.newInstanceForResult(this, filterId, (row as FilterCategoryRow).ordinal, REQUEST_CODE_FILTER_DETAILS) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//TODO |
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
override fun stringForRow(row: RowRepresentable): String { |
|
|
|
|
|
|
|
return this.currentFilter?.numberOfElementIn(row as FilterCategoryRow).toString() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onRowValueChanged(value: Any?, row: RowRepresentable) { |
|
|
|
|
|
|
|
super.onRowValueChanged(value, row) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Init UI |
|
|
|
* Init UI |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -161,24 +150,20 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
|
|
|
|
|
|
|
primaryKey?.let { |
|
|
|
primaryKey?.let { |
|
|
|
currentFilter = Filter.getFilterBydId(realm, it) |
|
|
|
currentFilter = Filter.getFilterBydId(realm, it) |
|
|
|
|
|
|
|
isUpdating = true |
|
|
|
} ?: run { |
|
|
|
} ?: run { |
|
|
|
realm.beginTransaction() |
|
|
|
realm.beginTransaction() |
|
|
|
currentFilter = Filter.newInstance(realm) |
|
|
|
currentFilter = Filter.newInstance(realm) |
|
|
|
realm.commitTransaction() |
|
|
|
realm.commitTransaction() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rows.clear() |
|
|
|
// Create a copy if the user cancels the updates |
|
|
|
for (category in categories) { |
|
|
|
currentFilter?.let { |
|
|
|
var filtersSelected = "" |
|
|
|
filterCopy = getRealm().copyFromRealm(it) |
|
|
|
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.clear() |
|
|
|
|
|
|
|
rows.addAll(FilterCategoryRow.values()) |
|
|
|
|
|
|
|
|
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) |
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) |
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
@ -194,35 +179,51 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Save data |
|
|
|
* Valid the updates of the filter |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private fun validUpdates() { |
|
|
|
|
|
|
|
Timber.d("Valid filter updates") |
|
|
|
|
|
|
|
val filterId = currentFilter?.id ?: "" |
|
|
|
|
|
|
|
finishActivityWithResult(filterId) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Cancel the latest updates of the filter |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun saveData() { |
|
|
|
private fun cancelUpdates() { |
|
|
|
|
|
|
|
Timber.d("Cancel filter updates") |
|
|
|
|
|
|
|
|
|
|
|
// TODO: Save the currentFilter object here |
|
|
|
val filterId = filterCopy?.id ?: "" |
|
|
|
// Maybe we don't need to do anything because the object is already up to date |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
finishActivityWithResult("") |
|
|
|
val realm = getRealm() |
|
|
|
|
|
|
|
realm.beginTransaction() |
|
|
|
|
|
|
|
filterCopy?.let { |
|
|
|
|
|
|
|
realm.copyToRealmOrUpdate(it) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
realm.commitTransaction() |
|
|
|
|
|
|
|
finishActivityWithResult(filterId) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Delete data |
|
|
|
* Delete data |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun deleteData() { |
|
|
|
private fun deleteFilter() { |
|
|
|
|
|
|
|
Timber.d("Delete filter") |
|
|
|
// TODO: Delete the currentFilter object here |
|
|
|
val realm = getRealm() |
|
|
|
|
|
|
|
realm.beginTransaction() |
|
|
|
|
|
|
|
currentFilter?.deleteFromRealm() |
|
|
|
|
|
|
|
realm.commitTransaction() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
finishActivityWithResult("") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Finish the activity with a result |
|
|
|
* Finish the activity with a result |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun finishActivityWithResult(uniqueIdentifier: String) { |
|
|
|
private fun finishActivityWithResult(uniqueIdentifier: String) { |
|
|
|
/* |
|
|
|
|
|
|
|
val intent = Intent() |
|
|
|
val intent = Intent() |
|
|
|
intent.putExtra(EditableDataActivity.IntentKey.DATA_TYPE.keyName, dataType) |
|
|
|
intent.putExtra(FiltersActivity.IntentKey.FILTER_ID.keyName, uniqueIdentifier) |
|
|
|
intent.putExtra(EditableDataActivity.IntentKey.PRIMARY_KEY.keyName, uniqueIdentifier) |
|
|
|
|
|
|
|
activity?.setResult(RESULT_OK, intent) |
|
|
|
activity?.setResult(RESULT_OK, intent) |
|
|
|
*/ |
|
|
|
|
|
|
|
activity?.finish() |
|
|
|
activity?.finish() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|