|
|
|
|
@ -1,5 +1,6 @@ |
|
|
|
|
package net.pokeranalytics.android.ui.fragment |
|
|
|
|
|
|
|
|
|
import android.content.Intent |
|
|
|
|
import android.os.Bundle |
|
|
|
|
import android.view.* |
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
|
@ -20,17 +21,20 @@ import timber.log.Timber |
|
|
|
|
|
|
|
|
|
open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
companion object { |
|
|
|
|
const val REQUEST_CODE_FILTER_DETAILS = 100 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
|
lateinit var item: RealmObject |
|
|
|
|
lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
private var rows: ArrayList<RowRepresentable> = ArrayList() |
|
|
|
|
private var filterMenu: Menu? = null |
|
|
|
|
private var dataType: Int? = null |
|
|
|
|
private var primaryKey: String? = null |
|
|
|
|
private var selectedRow: RowRepresentable? = null |
|
|
|
|
|
|
|
|
|
var isUpdating = false |
|
|
|
|
var shouldOpenKeyboard = true |
|
|
|
|
|
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
|
|
|
|
return inflater.inflate(R.layout.fragment_filters, container, false) |
|
|
|
|
@ -42,15 +46,34 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
initData() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { |
|
|
|
|
super.onActivityResult(requestCode, resultCode, data) |
|
|
|
|
|
|
|
|
|
if (requestCode == REQUEST_CODE_FILTER_DETAILS) { |
|
|
|
|
|
|
|
|
|
Timber.d("onActivityResult: $requestCode") |
|
|
|
|
|
|
|
|
|
// TODO: Update the selected row here... |
|
|
|
|
selectedRow?.let { |
|
|
|
|
rowRepresentableAdapter.refreshRow(it) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { |
|
|
|
|
/* |
|
|
|
|
inflater?.inflate(R.menu.editable_data, menu) |
|
|
|
|
this.filterMenu = menu |
|
|
|
|
*/ |
|
|
|
|
updateMenuUI() |
|
|
|
|
super.onCreateOptionsMenu(menu, inflater) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onBackPressed() { |
|
|
|
|
super.onBackPressed() |
|
|
|
|
|
|
|
|
|
//TODO: Cancel changes on the Filter object |
|
|
|
|
|
|
|
|
|
finishActivityWithResult("") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem?): Boolean { |
|
|
|
|
when (item!!.itemId) { |
|
|
|
|
@ -69,7 +92,8 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
|
|
|
|
|
if (row is FilterCategoryRow) { |
|
|
|
|
Timber.d("Subcategories: ${row.getSubcategories()}") |
|
|
|
|
FilterDetailsActivity.newInstanceForResult(this, row.ordinal, 1000) |
|
|
|
|
selectedRow = row |
|
|
|
|
FilterDetailsActivity.newInstanceForResult(this, row.ordinal, REQUEST_CODE_FILTER_DETAILS) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
@ -113,55 +137,28 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
* Update menu UI |
|
|
|
|
*/ |
|
|
|
|
private fun updateMenuUI() { |
|
|
|
|
/* |
|
|
|
|
editableMenu?.findItem(R.id.delete)?.isVisible = isUpdating |
|
|
|
|
editableMenu?.findItem(R.id.save)?.isVisible = true |
|
|
|
|
*/ |
|
|
|
|
filterMenu?.findItem(R.id.delete)?.isVisible = isUpdating |
|
|
|
|
filterMenu?.findItem(R.id.save)?.isVisible = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Save data |
|
|
|
|
*/ |
|
|
|
|
fun saveData() { |
|
|
|
|
/* |
|
|
|
|
if ((this.item as Savable).isValidForSave()) { |
|
|
|
|
this.getRealm().executeTransaction { |
|
|
|
|
val item = it.copyToRealmOrUpdate(this.item) |
|
|
|
|
private fun saveData() { |
|
|
|
|
|
|
|
|
|
val uniqueIdentifier = if (item is Identifiable) { |
|
|
|
|
item.id |
|
|
|
|
} else "" |
|
|
|
|
// TODO: Save the filter object here |
|
|
|
|
// Maybe we don't need to do anything because the object is already up to date |
|
|
|
|
|
|
|
|
|
finishActivityWithResult(uniqueIdentifier) |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
val message = (this.item as Savable).getFailedSaveMessage() |
|
|
|
|
val builder = AlertDialog.Builder(requireContext()) |
|
|
|
|
.setMessage(message) |
|
|
|
|
.setNegativeButton(R.string.ok, null) |
|
|
|
|
builder.show() |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
finishActivityWithResult("") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Delete data |
|
|
|
|
*/ |
|
|
|
|
private fun deleteData() { |
|
|
|
|
/* |
|
|
|
|
val builder = AlertDialog.Builder(requireContext()) |
|
|
|
|
builder.setTitle(R.string.warning) |
|
|
|
|
.setMessage(R.string.are_you_sure_you_want_to_do_that_) |
|
|
|
|
.setNegativeButton(R.string.no, null) |
|
|
|
|
.setPositiveButton(R.string.yes) { _, _ -> |
|
|
|
|
//TODO: Maybe update this code, does the object need to be managed? |
|
|
|
|
this.getRealm().executeTransaction { |
|
|
|
|
this.liveDataType.deleteData(it, (this.item as Manageable)) |
|
|
|
|
} |
|
|
|
|
this.activity?.finish() |
|
|
|
|
} |
|
|
|
|
builder.show() |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
// TODO: Delete the filter object here |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -180,12 +177,8 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat |
|
|
|
|
/** |
|
|
|
|
* Set fragment data |
|
|
|
|
*/ |
|
|
|
|
fun setData(dataType: Int, primaryKey: String?) { |
|
|
|
|
/* |
|
|
|
|
this.dataType = dataType |
|
|
|
|
this.liveDataType = LiveData.values()[dataType] |
|
|
|
|
fun setData(primaryKey: String?) { |
|
|
|
|
this.primaryKey = primaryKey |
|
|
|
|
*/ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |