diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/FilterDetailsActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/FilterDetailsActivity.kt index 8d6b4148..62259941 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/FilterDetailsActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/FilterDetailsActivity.kt @@ -34,6 +34,7 @@ class FilterDetailsActivity : PokerAnalyticsActivity() { } } + private lateinit var fragment:FilterDetailsFragment override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -41,6 +42,10 @@ class FilterDetailsActivity : PokerAnalyticsActivity() { initUI() } + override fun onBackPressed() { + fragment.onBackPressed() + } + /** * Init UI */ @@ -50,7 +55,7 @@ class FilterDetailsActivity : PokerAnalyticsActivity() { val fragmentTransaction = fragmentManager.beginTransaction() val filterCategoryOrdinal = intent.getIntExtra(IntentKey.FILTER_CATEGORY_ORDINAL.keyName, 0) - val fragment = FilterDetailsFragment() + fragment = FilterDetailsFragment() fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.commit() fragment.setData(filterCategoryOrdinal) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt index 70652990..61003c35 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt @@ -15,6 +15,8 @@ class FiltersActivity : PokerAnalyticsActivity() { PRIMARY_KEY("PRIMARY_KEY"); } + private lateinit var fragment: FiltersFragment + companion object { /** * Default constructor @@ -33,13 +35,16 @@ class FiltersActivity : PokerAnalyticsActivity() { } } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_filters) initUI() } + override fun onBackPressed() { + fragment.onBackPressed() + } + /** * Init UI */ @@ -48,10 +53,11 @@ class FiltersActivity : PokerAnalyticsActivity() { val fragmentManager = supportFragmentManager val fragmentTransaction = fragmentManager.beginTransaction() - val fragment = FiltersFragment() + fragment = FiltersFragment() fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.commit() - //fragment.setData(dataType, primaryKey) + //TODO: send primary key + fragment.setData("") } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt index 143369a3..c3e52fff 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -1,7 +1,10 @@ package net.pokeranalytics.android.ui.fragment 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 io.realm.RealmObject 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.RowRepresentableDelegate 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.RowViewType 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 timber.log.Timber @@ -48,22 +53,9 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), RowRepresentableDat initData() } - override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { - /* - inflater?.inflate(R.menu.editable_data, menu) - 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 onBackPressed() { + super.onBackPressed() + saveData() } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { @@ -112,8 +104,11 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), RowRepresentableDat } rowRepresentableAdapter.refreshRow(row) - } + when(row) { + FilterRow.FROM -> BottomSheetFragment.create(fragmentManager, row, this, null) + } + } override fun isSelected(row: RowRepresentable): Boolean { 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 */ - 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 "" + private fun saveData() { - finishActivityWithResult(uniqueIdentifier) - } - } else { - val message = (this.item as Savable).getFailedSaveMessage() - val builder = AlertDialog.Builder(requireContext()) - .setMessage(message) - .setNegativeButton(R.string.ok, null) - builder.show() - } - */ + //TODO: Save filter details data + Timber.d("Save filter details data") + 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() - */ - } /** * Finish the activity with a result diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt index ed9186d9..87eff49f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt @@ -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 = 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 - */ } } \ No newline at end of file