Update UI management for filters

feature/top10
Aurelien Hubert 7 years ago
parent 09b92b3900
commit 8ffbf1cff2
  1. 7
      app/src/main/java/net/pokeranalytics/android/ui/activity/FilterDetailsActivity.kt
  2. 12
      app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt
  3. 82
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt
  4. 85
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt

@ -34,6 +34,7 @@ class FilterDetailsActivity : PokerAnalyticsActivity() {
} }
} }
private lateinit var fragment:FilterDetailsFragment
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -41,6 +42,10 @@ class FilterDetailsActivity : PokerAnalyticsActivity() {
initUI() initUI()
} }
override fun onBackPressed() {
fragment.onBackPressed()
}
/** /**
* Init UI * Init UI
*/ */
@ -50,7 +55,7 @@ class FilterDetailsActivity : PokerAnalyticsActivity() {
val fragmentTransaction = fragmentManager.beginTransaction() val fragmentTransaction = fragmentManager.beginTransaction()
val filterCategoryOrdinal = intent.getIntExtra(IntentKey.FILTER_CATEGORY_ORDINAL.keyName, 0) val filterCategoryOrdinal = intent.getIntExtra(IntentKey.FILTER_CATEGORY_ORDINAL.keyName, 0)
val fragment = FilterDetailsFragment() fragment = FilterDetailsFragment()
fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.add(R.id.container, fragment)
fragmentTransaction.commit() fragmentTransaction.commit()
fragment.setData(filterCategoryOrdinal) fragment.setData(filterCategoryOrdinal)

@ -15,6 +15,8 @@ class FiltersActivity : PokerAnalyticsActivity() {
PRIMARY_KEY("PRIMARY_KEY"); PRIMARY_KEY("PRIMARY_KEY");
} }
private lateinit var fragment: FiltersFragment
companion object { companion object {
/** /**
* Default constructor * Default constructor
@ -33,13 +35,16 @@ class FiltersActivity : PokerAnalyticsActivity() {
} }
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_filters) setContentView(R.layout.activity_filters)
initUI() initUI()
} }
override fun onBackPressed() {
fragment.onBackPressed()
}
/** /**
* Init UI * Init UI
*/ */
@ -48,10 +53,11 @@ class FiltersActivity : PokerAnalyticsActivity() {
val fragmentManager = supportFragmentManager val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction() val fragmentTransaction = fragmentManager.beginTransaction()
val fragment = FiltersFragment() fragment = FiltersFragment()
fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.add(R.id.container, fragment)
fragmentTransaction.commit() fragmentTransaction.commit()
//fragment.setData(dataType, primaryKey) //TODO: send primary key
fragment.setData("")
} }

@ -1,7 +1,10 @@
package net.pokeranalytics.android.ui.fragment package net.pokeranalytics.android.ui.fragment
import android.os.Bundle import android.os.Bundle
import android.view.* import android.view.LayoutInflater
import android.view.Menu
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.RealmObject import io.realm.RealmObject
import kotlinx.android.synthetic.main.fragment_filter_details.* import kotlinx.android.synthetic.main.fragment_filter_details.*
@ -12,9 +15,11 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment
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.FilterCategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSubcategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSubcategoryRow
import timber.log.Timber import timber.log.Timber
@ -48,22 +53,9 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), RowRepresentableDat
initData() initData()
} }
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { override fun onBackPressed() {
/* super.onBackPressed()
inflater?.inflate(R.menu.editable_data, menu) saveData()
this.filterMenu = menu
*/
updateMenuUI()
super.onCreateOptionsMenu(menu, inflater)
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item!!.itemId) {
R.id.save -> saveData()
R.id.delete -> deleteData()
}
return true
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
@ -112,8 +104,11 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), RowRepresentableDat
} }
rowRepresentableAdapter.refreshRow(row) rowRepresentableAdapter.refreshRow(row)
} when(row) {
FilterRow.FROM -> BottomSheetFragment.create(fragmentManager, row, this, null)
}
}
override fun isSelected(row: RowRepresentable): Boolean { override fun isSelected(row: RowRepresentable): Boolean {
return selectedRows.contains(row) return selectedRows.contains(row)
@ -192,60 +187,17 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), RowRepresentableDat
} }
/**
* Update menu UI
*/
private fun updateMenuUI() {
/*
editableMenu?.findItem(R.id.delete)?.isVisible = isUpdating
editableMenu?.findItem(R.id.save)?.isVisible = true
*/
}
/** /**
* Save data * Save data
*/ */
fun saveData() { private fun saveData() {
/*
if ((this.item as Savable).isValidForSave()) {
this.getRealm().executeTransaction {
val item = it.copyToRealmOrUpdate(this.item)
val uniqueIdentifier = if (item is Identifiable) {
item.id
} else ""
finishActivityWithResult(uniqueIdentifier) //TODO: Save filter details data
} Timber.d("Save filter details data")
} else { finishActivityWithResult("")
val message = (this.item as Savable).getFailedSaveMessage()
val builder = AlertDialog.Builder(requireContext())
.setMessage(message)
.setNegativeButton(R.string.ok, null)
builder.show()
}
*/
} }
/**
* 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()
*/
}
/** /**
* Finish the activity with a result * Finish the activity with a result

@ -1,5 +1,6 @@
package net.pokeranalytics.android.ui.fragment package net.pokeranalytics.android.ui.fragment
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
@ -20,17 +21,20 @@ import timber.log.Timber
open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate {
companion object {
const val REQUEST_CODE_FILTER_DETAILS = 100
}
lateinit var parentActivity: PokerAnalyticsActivity lateinit var parentActivity: PokerAnalyticsActivity
lateinit var item: RealmObject lateinit var item: RealmObject
lateinit var rowRepresentableAdapter: RowRepresentableAdapter lateinit var rowRepresentableAdapter: RowRepresentableAdapter
private var rows: ArrayList<RowRepresentable> = ArrayList() private var rows: ArrayList<RowRepresentable> = ArrayList()
private var filterMenu: Menu? = null private var filterMenu: Menu? = null
private var dataType: Int? = null
private var primaryKey: String? = null private var primaryKey: String? = null
private var selectedRow: RowRepresentable? = null
var isUpdating = false var isUpdating = false
var shouldOpenKeyboard = true
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)
@ -42,15 +46,34 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat
initData() 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?) { override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
/*
inflater?.inflate(R.menu.editable_data, menu) inflater?.inflate(R.menu.editable_data, menu)
this.filterMenu = menu this.filterMenu = menu
*/
updateMenuUI() updateMenuUI()
super.onCreateOptionsMenu(menu, inflater) super.onCreateOptionsMenu(menu, inflater)
} }
override fun onBackPressed() {
super.onBackPressed()
//TODO: Cancel changes on the Filter object
finishActivityWithResult("")
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean { override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item!!.itemId) { when (item!!.itemId) {
@ -69,7 +92,8 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat
if (row is FilterCategoryRow) { if (row is FilterCategoryRow) {
Timber.d("Subcategories: ${row.getSubcategories()}") 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 * Update menu UI
*/ */
private fun updateMenuUI() { private fun updateMenuUI() {
/* filterMenu?.findItem(R.id.delete)?.isVisible = isUpdating
editableMenu?.findItem(R.id.delete)?.isVisible = isUpdating filterMenu?.findItem(R.id.save)?.isVisible = true
editableMenu?.findItem(R.id.save)?.isVisible = true
*/
} }
/** /**
* Save data * Save data
*/ */
fun saveData() { private fun saveData() {
/*
if ((this.item as Savable).isValidForSave()) {
this.getRealm().executeTransaction {
val item = it.copyToRealmOrUpdate(this.item)
val uniqueIdentifier = if (item is Identifiable) { // TODO: Save the filter object here
item.id // Maybe we don't need to do anything because the object is already up to date
} else ""
finishActivityWithResult(uniqueIdentifier) finishActivityWithResult("")
}
} else {
val message = (this.item as Savable).getFailedSaveMessage()
val builder = AlertDialog.Builder(requireContext())
.setMessage(message)
.setNegativeButton(R.string.ok, null)
builder.show()
}
*/
} }
/** /**
* Delete data * Delete data
*/ */
private fun deleteData() { private fun deleteData() {
/*
val builder = AlertDialog.Builder(requireContext()) // TODO: Delete the filter object here
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()
*/
} }
/** /**
@ -180,12 +177,8 @@ open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDat
/** /**
* Set fragment data * Set fragment data
*/ */
fun setData(dataType: Int, primaryKey: String?) { fun setData(primaryKey: String?) {
/*
this.dataType = dataType
this.liveDataType = LiveData.values()[dataType]
this.primaryKey = primaryKey this.primaryKey = primaryKey
*/
} }
} }
Loading…
Cancel
Save