diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index 5983eb4b..c5ec9284 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.calculus import io.realm.Realm +import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Stat.* import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.combined @@ -8,8 +9,10 @@ import net.pokeranalytics.android.model.extensions.hourlyDuration import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.filter import net.pokeranalytics.android.model.realm.ComputableResult +import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.ReportSetup import net.pokeranalytics.android.model.realm.SessionSet +import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.util.extensions.startOfDay import timber.log.Timber import java.util.* @@ -29,19 +32,50 @@ class Calculator { var evolutionValues: EvolutionValues = EvolutionValues.NONE, var stats: List = listOf(), var criterias: List = listOf(), - var query: Query = Query(), - var aggregationType: AggregationType? = null + query: Query = Query(), + filter: Filter? = null, + var aggregationType: AggregationType? = null, + var userGenerated: Boolean = false ) { + private var _query: Query = query + private var _filter: Filter? = filter + + init { + if (!this._query.conditions.isEmpty() && this._filter != null) { + throw IllegalStateException("Can't specify a query with conditions AND a filter") + } + } + + val query: Query + get() { + this._filter?.let { + return it.query + } + return this._query + } + /** * The way the stats are going to be displayed */ - enum class Display { + enum class Display : RowRepresentable { TABLE, EVOLUTION, COMPARISON, MAP, - POLYNOMIAL + POLYNOMIAL; + + override val resId: Int? + get() { + return when (this) { + TABLE -> R.string.table + EVOLUTION -> R.string.curve + COMPARISON -> R.string.comparison + MAP -> R.string.map + POLYNOMIAL -> null + } + } + } /** diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt index 248676b1..722b52c2 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt @@ -58,6 +58,11 @@ enum class Stat : RowRepresentable { companion object { + val userSelectableList: List + get() { + return values().filter { it.canBeUserSelected } + } + fun returnOnInvestment(netResult: Double, buyin: Double): Double? { if (buyin == 0.0) { return null @@ -114,6 +119,7 @@ enum class Stat : RowRepresentable { MINIMUM_NETRESULT -> R.string.min_net_result MAXIMUM_DURATION -> R.string.longest_session DAYS_PLAYED -> R.string.days_played + TOTAL_BUYIN -> R.string.total_buyin else -> throw IllegalStateException("Stat ${this.name} name required but undefined") } } @@ -245,6 +251,14 @@ enum class Stat : RowRepresentable { } } + private val canBeUserSelected: Boolean + get() { + return when (this) { + WINNING_SESSION_COUNT, BB_SESSION_COUNT, RISK_OF_RUIN -> false + else -> true + } + } + override val viewType: Int = RowViewType.TITLE_VALUE.ordinal } diff --git a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt index 01f9c3d5..0c36d072 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.model import io.realm.Realm import io.realm.Sort import io.realm.kotlin.where +import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.PokerAnalyticsException import net.pokeranalytics.android.model.Criteria.Bankrolls.comparison import net.pokeranalytics.android.model.Criteria.Blinds.comparison @@ -54,6 +55,7 @@ fun getCombinations(queries: List>): List { } sealed class Criteria : RowRepresentable { + abstract class RealmCriteria : Criteria() { inline fun comparison(): List { return compare, T>() @@ -199,6 +201,30 @@ sealed class Criteria : RowRepresentable { } } + override val resId: Int? + get() { + return when (this) { + Bankrolls -> R.string.bankroll + Games -> R.string.game + TournamentNames -> R.string.tournament_name + Locations -> R.string.location + TournamentFeatures -> R.string.tournament_feature + Limits -> R.string.limit + TableSizes -> R.string.table_size + TournamentTypes -> R.string.tournament_type + MonthsOfYear -> R.string.month_of_the_year + DaysOfWeek -> R.string.day_of_the_week + SessionTypes -> R.string.cash_or_tournament + BankrollTypes -> R.string.live_or_online + DayPeriods -> R.string.weekdays_or_weekend + Years -> R.string.year + AllMonthsUpToNow -> R.string.month + Blinds -> R.string.blind + TournamentFees -> R.string.entry_fees + else -> null + } + } + companion object { inline fun , reified T : NameManageable> compare(): List { val objects = mutableListOf() diff --git a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt index d82d886f..5a556290 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt @@ -152,7 +152,7 @@ enum class LiveData : Localizable { } /** - * Return the new entity title + * Return the new entity titleResId */ fun newEntityLocalizedTitle(context: Context): String { return "${context.getString(R.string.new_str)} ${this.localizedTitle(context).toLowerCase()}" diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index a747b078..5d5061c1 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -512,7 +512,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat } /** - * Return the game title + * Return the game titleResId * Example: NL Holdem */ fun getFormattedGame(): String { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt index 88552f8e..7de5d8f1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt @@ -171,15 +171,15 @@ class HomeActivity : PokerAnalyticsActivity() { //CLEAN /* 0 -> { - toolbar.title = getString(R.string.feed) + toolbar.titleResId = getString(R.string.feed) homeMenu?.findItem(R.id.queryWith)?.isVisible = false } 1 -> { - toolbar.title = getString(R.string.stats) + toolbar.titleResId = getString(R.string.stats) homeMenu?.findItem(R.id.queryWith)?.isVisible = false } 2 -> { - toolbar.title = getString(R.string.services) + toolbar.titleResId = getString(R.string.services) homeMenu?.findItem(R.id.queryWith)?.isVisible = false } */ diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt index 39b2b41b..787c0dac 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt @@ -50,7 +50,7 @@ class RowRepresentableAdapter( if (row.viewType == RowViewType.TITLE_SWITCH.ordinal || row.viewType == RowViewType.LIST.ordinal) { // Avoid to refresh the view because it will refresh itself - // Caution if we want to update the title for example + // Caution if we want to update the titleResId for example return } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt index e8ddb06d..e00b07ff 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt @@ -132,7 +132,7 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable parentActivity = activity as PokerAnalyticsActivity - // Avoid a bug during setting the title + // Avoid a bug during setting the titleResId toolbar.title = "" parentActivity.setSupportActionBar(toolbar) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt index d8ae4772..e4e52d9d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt @@ -82,7 +82,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable parentActivity = activity as PokerAnalyticsActivity - // Avoid a bug during setting the title + // Avoid a bug during setting the titleResId toolbar.title = "" parentActivity.setSupportActionBar(toolbar) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt index 76d552e3..ff562e31 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt @@ -115,7 +115,7 @@ class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataS val activity = activity as PokerAnalyticsActivity - // Avoid a bug during setting the title + // Avoid a bug during setting the titleResId toolbar.title = this.getString( R.string.currency) activity.setSupportActionBar(toolbar) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt index c7ede0f0..4c537216 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt @@ -41,6 +41,17 @@ class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataSource private lateinit var dataListAdapter: RowRepresentableAdapter private var lastItemClickedId: String = "" + /** + * Set fragment data + */ + fun setData(dataType: Int) { + this.dataType = LiveData.values()[dataType] + this.toolbar.title = this.dataType.localizedTitle(requireContext()) + this.dataType?.let { + this.items = it.items(getRealm()) + } + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) return inflater.inflate(R.layout.fragment_data_list, container, false) @@ -51,6 +62,49 @@ class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataSource initUI() } + + /** + * Init UI + */ + private fun initUI() { + + val activity = activity as PokerAnalyticsActivity + + // Avoid a bug during setting the titleResId + toolbar.title = "" + + activity.setSupportActionBar(toolbar) + activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + setHasOptionsMenu(true) + + val viewManager = LinearLayoutManager(requireContext()) + dataListAdapter = RowRepresentableAdapter(this, this) + + val swipeToDelete = SwipeToDeleteCallback(dataListAdapter) { position -> + val itemId = (this.items[position] as Identifiable).id + deleteItem(dataListAdapter, items, itemId) + } + + val itemTouchHelper = ItemTouchHelper(swipeToDelete) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = dataListAdapter + itemTouchHelper.attachToRecyclerView(this) + } + + this.addButton.setOnClickListener { + this.dataType?.let { + EditableDataActivity.newInstance( + requireContext(), + dataType = it.ordinal, + primaryKey = null + ) + } + } + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == REQUEST_CODE_DETAILS && resultCode == Activity.RESULT_OK) { @@ -101,56 +155,4 @@ class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataSource } } - /** - * Init UI - */ - private fun initUI() { - - val activity = activity as PokerAnalyticsActivity - - // Avoid a bug during setting the title - toolbar.title = "" - - activity.setSupportActionBar(toolbar) - activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - - val viewManager = LinearLayoutManager(requireContext()) - dataListAdapter = RowRepresentableAdapter(this, this) - - val swipeToDelete = SwipeToDeleteCallback(dataListAdapter) { position -> - val itemId = (this.items[position] as Identifiable).id - deleteItem(dataListAdapter, items, itemId) - } - - val itemTouchHelper = ItemTouchHelper(swipeToDelete) - - recyclerView.apply { - setHasFixedSize(true) - layoutManager = viewManager - adapter = dataListAdapter - itemTouchHelper.attachToRecyclerView(this) - } - - this.addButton.setOnClickListener { - this.dataType?.let { - EditableDataActivity.newInstance( - requireContext(), - dataType = it.ordinal, - primaryKey = null - ) - } - } - } - - /** - * Set fragment data - */ - fun setData(dataType: Int) { - this.dataType = LiveData.values()[dataType] - this.toolbar.title = this.dataType.localizedTitle(requireContext()) - this.dataType?.let { - this.items = it.items(getRealm()) - } - } } \ 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 fc25d23a..1d658317 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 @@ -4,53 +4,227 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isVisible +import androidx.recyclerview.widget.LinearLayoutManager import io.realm.Realm +import kotlinx.android.synthetic.main.fragment_report_creation.* import net.pokeranalytics.android.R +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.model.realm.ReportDisplay +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.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType +import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable -class ReportCreationFragment : RealmFragment() { +class ReportCreationFragment : RealmFragment(), RowRepresentableDataSource, RowRepresentableDelegate { - class Process { + private lateinit var optionsAdapter: RowRepresentableAdapter - var step: Step = Step.TYPE - var display: ReportDisplay? = null - var stats = listOf() - var comparators = listOf() - var useFilter: Boolean? = null - var filter: Filter? = null + private var assistant = Assistant() + private var currentRows: List = listOf() - enum class Step { - TYPE, - STAT, - COMPARATOR, - FILTER, - FINALIZE + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + super.onCreateView(inflater, container, savedInstanceState) + return inflater.inflate(R.layout.fragment_report_creation, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + this.optionsAdapter = RowRepresentableAdapter(this, this) + + val viewManager = LinearLayoutManager(requireContext()) + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = optionsAdapter } - val nextStep: Step - get() { - return when (this.display) { - null -> Step.TYPE - else -> { - if (this.stats.isEmpty()) { - Step.STAT - } else if (this.display!! == ReportDisplay.COMPARISON_GRAPH && this.comparators.isEmpty()) { - Step.COMPARATOR - } else if (this.useFilter == null) { - Step.FILTER - } else { - Step.FINALIZE - } - } + this.updateUIWithCurrentStep() + + this.next.setOnClickListener { + if (assistant.nextEnabled) { + this.assistant.nextStep() + + if (this.assistant.step == Assistant.Step.FINALIZE) { + // launch report + + val options = this.assistant.options + + + } else { + this.updateUIWithCurrentStep() } + } + } + + + } + + private fun updateUIWithCurrentStep() { + + this.next.isVisible = this.assistant.nextButtonShouldAppear + this.next.text = requireContext().getString(this.assistant.nextButtonTitleResId) + this.next.isEnabled = this.assistant.nextEnabled + + val rows = mutableListOf() + + this.assistant.titleResId?.let { titleResId -> + rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = titleResId)) + } + + rows.addAll(this.assistant.dataSource) + + this.currentRows = rows + this.optionsAdapter.notifyDataSetChanged() + + } + + // RowRepresentableDataSource + + override fun adapterRows(): List? { + return this.currentRows + } + + override fun rowRepresentableForPosition(position: Int): RowRepresentable? { + return this.currentRows[position] + } + + override fun numberOfRows(): Int { + return this.currentRows.size + } + + override fun viewTypeForPosition(position: Int): Int { + return when (position) { + 0 -> RowViewType.HEADER_TITLE.ordinal + else -> RowViewType.TITLE_CHECK.ordinal + } + } + + override fun indexForRow(row: RowRepresentable): Int { + return this.currentRows.indexOf(row) + } + + override fun isSelected(row: RowRepresentable): Boolean { + return this.assistant.isSelected(row) + } + + // RowRepresentableDelegate + + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + + val newStep = this.assistant.onRowSelected(position - 1) + if (newStep) { + this.updateUIWithCurrentStep() + } else { + this.next.isEnabled = this.assistant.nextEnabled + this.optionsAdapter.refreshRow(row) + } - fun titleForStep(step: Step) : Int? { + } + +} + +class Assistant { + + var step: Step = Step.TYPE + private var display: Calculator.Options.Display = Calculator.Options.Display.TABLE + private var stats = mutableListOf() + private var comparators = mutableListOf() + private var useFilter: Boolean? = null + private var filter: Filter? = null + + val options: Calculator.Options + get() { + return Calculator.Options( + this.display, + stats = this.stats, + criterias = this.comparators, + filter = this.filter, + userGenerated = true + ) + } + + enum class Step { + TYPE, + STAT, + COMPARATOR, + FILTER, + FINALIZE + } + + /** + * Notifies the Assistant a row has been selected with a [position] + * Returns whether the step has changed + */ + fun onRowSelected(position: Int): Boolean { + + val stepChanges = !this.nextButtonShouldAppear + + when (this.step) { + Step.TYPE -> { + this.display = this.dataSource[position] as Calculator.Options.Display + this.nextStep() + } + Step.STAT -> { + val stat = this.dataSource[position] as Stat + if (this.stats.contains(stat)) { + this.stats.remove(stat) + } else { + this.stats.add(stat) + } + } + Step.COMPARATOR -> { + val comparator = this.dataSource[position] as Criteria + if (this.comparators.contains(comparator)) { + this.comparators.remove(comparator) + } else { + this.comparators.add(comparator) + } + } + Step.FILTER -> { + this.filter = this.dataSource[position] as Filter + } + else -> { + } + } + return stepChanges + } + + fun isSelected(row: RowRepresentable): Boolean { + return when (this.step) { + Step.STAT -> this.stats.contains(row as Stat) + Step.COMPARATOR -> this.comparators.contains(row as Criteria) + else -> false + } + } + + fun nextStep() { + this.step = this.nextStep + } + + private val nextStep: Step + get() { + return if (this.stats.isEmpty()) { + Step.STAT + } else if (this.display == Calculator.Options.Display.COMPARISON && this.comparators.isEmpty()) { + Step.COMPARATOR + } else if (this.useFilter == null) { + Step.FILTER + } else { + Step.FINALIZE + } + + } + + val titleResId: Int? + get() { return when (step) { Step.TYPE -> R.string.new_report_step_type Step.STAT -> R.string.new_report_step_stat @@ -60,43 +234,50 @@ class ReportCreationFragment : RealmFragment() { } } - val dataSource: List - get() { - return when (this.step) { - Step.TYPE -> return listOf(ReportDisplay.FIGURES, ReportDisplay.EVO_GRAPH, ReportDisplay.COMPARISON_GRAPH) - Step.STAT -> return Stat.values().toList() - Step.COMPARATOR -> Criteria.all - Step.FILTER -> { - val realm = Realm.getDefaultInstance() - val filters = Filter.sortedByUsage(realm) - realm.close() - filters - } - else -> listOf() + val dataSource: List + get() { + return when (this.step) { + Step.TYPE -> listOf( + Calculator.Options.Display.TABLE, + Calculator.Options.Display.EVOLUTION, + Calculator.Options.Display.COMPARISON + ) + Step.STAT -> Stat.userSelectableList + Step.COMPARATOR -> Criteria.all + Step.FILTER -> { + val realm = Realm.getDefaultInstance() + val filters = Filter.sortedByUsage(realm) + realm.close() + filters } + else -> listOf() } + } - val nextButtonShouldAppear: Boolean - get() { - return when (this.step) { - Step.STAT, Step.COMPARATOR, Step.FILTER -> true - else -> false - } + val nextEnabled: Boolean + get() { + return when (this.step) { + Step.STAT -> this.stats.isNotEmpty() + Step.COMPARATOR -> this.comparators.isNotEmpty() + Step.FILTER -> true + else -> false } + } - val nextButtonTitle: Int - get() { - return when (this.step) { - Step.FILTER -> R.string.launch_report - else -> R.string.next - } + val nextButtonShouldAppear: Boolean + get() { + return when (this.step) { + Step.STAT, Step.COMPARATOR, Step.FILTER -> true + else -> false } + } - } - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - super.onCreateView(inflater, container, savedInstanceState) - return inflater.inflate(R.layout.fragment_report_creation, container, false) - } + val nextButtonTitleResId: Int + get() { + return when (this.step) { + Step.FILTER -> R.string.launch_report + else -> R.string.next + } + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportDetailsFragment.kt index 64475656..0d09654f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportDetailsFragment.kt @@ -55,7 +55,7 @@ class ReportDetailsFragment : PokerAnalyticsFragment() { parentActivity = activity as PokerAnalyticsActivity - // Avoid a bug during setting the title + // Avoid a bug during setting the titleResId toolbar.title = "" parentActivity.setSupportActionBar(toolbar) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index 8d5ef66c..f6aaa248 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -152,7 +152,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { parentActivity = activity as PokerAnalyticsActivity - // Avoid a bug during setting the title + // Avoid a bug during setting the titleResId toolbar.title = "" parentActivity.setSupportActionBar(toolbar) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt index 8c8f2b78..dd374778 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticDetailsFragment.kt @@ -84,7 +84,7 @@ class StatisticDetailsFragment : PokerAnalyticsFragment() { parentActivity = activity as PokerAnalyticsActivity - // Avoid a bug during setting the title + // Avoid a bug during setting the titleResId toolbar.title = "" parentActivity.setSupportActionBar(toolbar) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/LegendView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/LegendView.kt index f00f98cc..89608a15 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/LegendView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/LegendView.kt @@ -26,7 +26,7 @@ data class DefaultLegendValues( */ open class LegendView : FrameLayout { -// open class Values(var title: String, var leftFormat: TextFormat, var rightFormat: TextFormat? = null) +// open class Values(var titleResId: String, var leftFormat: TextFormat, var rightFormat: TextFormat? = null) // class MultiLineValues( // var firstTitle: String, // var secondTitle: String, diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt index 0eb9a166..3ef35761 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt @@ -80,7 +80,7 @@ interface Displayable : Localizable { interface Localizable { /** - * The resource identifier of the localized title + * The resource identifier of the localized titleResId */ val resId: Int? get() { @@ -88,7 +88,7 @@ interface Localizable { } /** - * The localized title of the row + * The localized titleResId of the row */ fun localizedTitle(context: Context): String { this.resId?.let { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index 717aeeac..7ecc4bb6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -130,7 +130,7 @@ enum class RowViewType(private var layoutRes: Int) { } /** - * Display a generic row (title, value, container) + * Display a generic row (titleResId, value, container) */ @SuppressWarnings("ResourceType") inner class RowViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/CustomizableRowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/CustomizableRowRepresentable.kt index 3b6da0ce..3cdc0ace 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/CustomizableRowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/CustomizableRowRepresentable.kt @@ -7,7 +7,7 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType /** - * A class to display a title (and a value) as a Row Representable object + * A class to display a titleResId (and a value) as a Row Representable object */ class CustomizableRowRepresentable( var customViewType: RowViewType? = RowViewType.HEADER_TITLE, diff --git a/app/src/main/res/layout/fragment_report_creation.xml b/app/src/main/res/layout/fragment_report_creation.xml index bcd331ff..84c07310 100644 --- a/app/src/main/res/layout/fragment_report_creation.xml +++ b/app/src/main/res/layout/fragment_report_creation.xml @@ -1,7 +1,8 @@ - @@ -10,11 +11,27 @@ app:title="@string/new_report" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" + app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintStart_toStartOf="parent" /> + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/navigation_home.xml b/app/src/main/res/menu/navigation_home.xml index 6ac0f33b..b401e5d9 100644 --- a/app/src/main/res/menu/navigation_home.xml +++ b/app/src/main/res/menu/navigation_home.xml @@ -5,17 +5,17 @@ + android:titleResId="@string/feed" /> + android:titleResId="@string/stats" /> + android:titleResId="@string/services" /> --> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 67ca7946..1f1cd23d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,7 +27,7 @@ Select your type of report Select one or more statistics Select one or more comparison criteria - Select a filter if you want, or launch report + Select a filter or launch report Launch Report Address