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 5c2b621d..62ebcdd6 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 @@ -10,12 +10,13 @@ import net.pokeranalytics.android.ui.fragment.FiltersFragment import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode import net.pokeranalytics.android.ui.interfaces.FilterableType -class FiltersActivity : PokerAnalyticsActivity() { +class FiltersActivity : PokerAnalyticsActivity() { enum class IntentKey(val keyName: String) { FILTER_ID("FILTER_ID"), - FILTERABLE_TYPE("FILTERABLE_TYPE"), - ; + FILTERABLE_TYPE("FILTERABLE_TYPE"), + HIDE_MOST_USED_FILTERS("HIDE_MOST_USED_FILTERS"), + ; } private lateinit var fragment: FiltersFragment @@ -24,18 +25,20 @@ class FiltersActivity : PokerAnalyticsActivity() { /** * Create a new instance for result */ - fun newInstanceForResult(fragment: Fragment, filterId: String? = null, currentFilterable: FilterableType) { - fragment.startActivityForResult(getIntent(fragment.requireContext(), filterId, currentFilterable), FilterActivityRequestCode.SELECT_FILTER.ordinal) + fun newInstanceForResult(fragment: Fragment, filterId: String? = null, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false) { + val intent = getIntent(fragment.requireContext(), filterId, currentFilterable, hideMostUsedFilters) + fragment.startActivityForResult(intent, FilterActivityRequestCode.CREATE_FILTER.ordinal) } - private fun getIntent(context:Context, filterId:String?, currentFilterable: FilterableType) : Intent { - val intent = Intent(context, FiltersActivity::class.java) - intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal) - filterId?.let { - intent.putExtra(IntentKey.FILTER_ID.keyName, it) - } - return intent - } + private fun getIntent(context: Context, filterId: String?, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false): Intent { + val intent = Intent(context, FiltersActivity::class.java) + intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal) + intent.putExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, hideMostUsedFilters) + filterId?.let { + intent.putExtra(IntentKey.FILTER_ID.keyName, it) + } + return intent + } } override fun onCreate(savedInstanceState: Bundle?) { @@ -56,13 +59,15 @@ class FiltersActivity : PokerAnalyticsActivity() { val fragmentManager = supportFragmentManager val fragmentTransaction = fragmentManager.beginTransaction() val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName) - val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0) - val filterableType = FilterableType.values()[ordinal] + val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0) + val hideMostUsedFilters = intent.getBooleanExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, false) + val filterableType = FilterableType.values()[ordinal] fragment = FiltersFragment() fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.commit() fragment.setData(filterId, filterableType) + fragment.updateMostUsedFiltersVisibility(!hideMostUsedFilters) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/ReportCreationActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/ReportCreationActivity.kt index f8f24c51..359b2a28 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/ReportCreationActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/ReportCreationActivity.kt @@ -14,25 +14,19 @@ class ReportCreationActivity : PokerAnalyticsActivity() { NEW_REPORT } - companion object { + companion object { var options: Calculator.Options? = null -// fun newInstance(context: Context) { -// val intent = Intent(context, ReportCreationActivity::class.java) -// context.startActivity(intent) -// } - fun newInstanceForResult(fragment: Fragment, context: Context) { val intent = Intent(context, ReportCreationActivity::class.java) fragment.startActivityForResult(intent, RequestCode.NEW_REPORT.ordinal) } - } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_reportcreation) + setContentView(R.layout.activity_report_creation) } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt index 8ede3675..ce23386b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt @@ -84,7 +84,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { if (data.getBooleanExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName, false)) { deleteSelectedTransaction() } - } else if (requestCode == FilterActivityRequestCode.SELECT_FILTER.ordinal && resultCode == RESULT_OK) { + } else if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == RESULT_OK) { data?.let { this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)) } 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 7bed87d8..3fbbb256 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 @@ -4,6 +4,7 @@ import android.app.Activity.RESULT_OK import android.content.Intent import android.os.Bundle import android.view.* +import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.chip.Chip import kotlinx.android.synthetic.main.fragment_editable_data.appBar @@ -27,6 +28,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.extensions.sorted +import timber.log.Timber open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { @@ -50,7 +52,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, private var selectedRow: RowRepresentable? = null private var isUpdating = false - private var isSaved = false + private var showMostUsedFiltersLayout = true override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) @@ -158,6 +160,8 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, moreFilters.setOnClickListener { DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false) } + + mostUsedFiltersLayout.isVisible = showMostUsedFiltersLayout } /** @@ -292,4 +296,13 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, this.filterableType = filterableType } + /** + * Update the most used filters visibility + */ + fun updateMostUsedFiltersVisibility(visible: Boolean) { + Timber.d("updateMostUsedFiltersVisibility: $visible") + showMostUsedFiltersLayout = visible + mostUsedFiltersLayout?.isVisible = visible + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt index ca06b1fc..9fb69d43 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportCreationFragment.kt @@ -3,9 +3,7 @@ package net.pokeranalytics.android.ui.fragment import android.app.Activity import android.content.Intent import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup +import android.view.* import androidx.recyclerview.widget.LinearLayoutManager import io.realm.Realm import kotlinx.android.synthetic.main.fragment_report_creation.* @@ -14,11 +12,14 @@ import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.realm.Filter +import net.pokeranalytics.android.ui.activity.FiltersActivity import net.pokeranalytics.android.ui.activity.ReportCreationActivity 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.RealmFragment +import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode +import net.pokeranalytics.android.ui.interfaces.FilterableType import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable @@ -29,6 +30,7 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR private var assistant = Assistant() private var currentRows: List = listOf() + private var reportCreationMenu: Menu? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) @@ -37,6 +39,42 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + this.initUI() + this.updateUIWithCurrentStep() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == Activity.RESULT_OK) { + this.updateUIWithCurrentStep() + } + } + + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + super.onCreateOptionsMenu(menu, inflater) + menu?.clear() + inflater?.inflate(R.menu.toolbar_report_creation, menu) + menu?.findItem(R.id.add)?.isVisible = false + reportCreationMenu = menu + } + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + when (item?.itemId) { + R.id.add -> { + if (this.assistant.step == Assistant.Step.FILTER) { + FiltersActivity.newInstanceForResult(this, currentFilterable = FilterableType.SESSION, hideMostUsedFilters = true) + } + } + } + return super.onOptionsItemSelected(item) + } + + /** + * Init UI + */ + private fun initUI() { + + setDisplayHomeAsUpEnabled(true) this.optionsAdapter = RowRepresentableAdapter(this, this) @@ -47,8 +85,6 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR adapter = optionsAdapter } - this.updateUIWithCurrentStep() - this.next.setOnClickListener { if (assistant.nextEnabled) { this.assistant.nextStep() @@ -68,23 +104,17 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR } } } - - } - - private fun finishActivityWithOptions(options: Calculator.Options) { - - ReportCreationActivity.options = options // temp object - - val intent = Intent() - activity?.setResult(Activity.RESULT_OK, intent) - activity?.finish() } + /** + * Update UI when changing the current step + */ private fun updateUIWithCurrentStep() { this.next.visibility = if (this.assistant.nextButtonShouldAppear) View.VISIBLE else View.GONE this.next.text = requireContext().getString(this.assistant.nextButtonTitleResId) this.next.isEnabled = this.assistant.nextEnabled + this.reportCreationMenu?.findItem(R.id.add)?.isVisible = this.assistant.addButtonShouldAppear val rows = mutableListOf() @@ -99,6 +129,17 @@ class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowR } + /** + * Finish activity + */ + private fun finishActivityWithOptions(options: Calculator.Options) { + ReportCreationActivity.options = options // temp object + val intent = Intent() + activity?.setResult(Activity.RESULT_OK, intent) + activity?.finish() + } + + // RowRepresentableDataSource override fun adapterRows(): List? { @@ -261,6 +302,7 @@ class Assistant { } Step.COMPARATOR -> Criteria.all Step.FILTER -> { + val data = ArrayList() val realm = Realm.getDefaultInstance() val filters = Filter.sortedByUsage(realm) realm.close() @@ -296,4 +338,12 @@ class Assistant { } } + val addButtonShouldAppear: Boolean + get() { + return when (this.step) { + Step.FILTER -> true + else -> false + } + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt index 26cb7a4f..124119fd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt @@ -90,7 +90,7 @@ class StatisticsFragment : FilterableFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) - if (requestCode == FilterActivityRequestCode.SELECT_FILTER.ordinal && resultCode == Activity.RESULT_OK) { + if (requestCode == FilterActivityRequestCode.CREATE_FILTER.ordinal && resultCode == Activity.RESULT_OK) { data?.let { this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName)) }