refactor tournament kind

feature/top10
Razmig Sarkissian 7 years ago
parent 0f797c26bf
commit 9eb4884172
  1. 6
      app/src/main/java/net/pokeranalytics/android/model/TournamentType.kt
  2. 14
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  3. 44
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  4. 8
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt
  5. 12
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt
  6. 2
      app/src/main/res/values/strings.xml

@ -4,14 +4,14 @@ import net.pokeranalytics.android.R
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
enum class TournamentKind : RowRepresentable { enum class TournamentType : RowRepresentable {
MTT, MTT,
SNG; SNG;
companion object { companion object {
val all : List<TournamentKind> val all : List<TournamentType>
get() { get() {
return TournamentKind.values() as List<TournamentKind> return TournamentType.values() as List<TournamentType>
} }
} }

@ -16,7 +16,7 @@ import net.pokeranalytics.android.exceptions.ModelException
import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.TableSize import net.pokeranalytics.android.model.TableSize
import net.pokeranalytics.android.model.TournamentKind import net.pokeranalytics.android.model.TournamentType
import net.pokeranalytics.android.model.extensions.SessionState import net.pokeranalytics.android.model.extensions.SessionState
import net.pokeranalytics.android.model.extensions.getState import net.pokeranalytics.android.model.extensions.getState
import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.Manageable
@ -169,7 +169,7 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre
var tournamentName: TournamentName? = null var tournamentName: TournamentName? = null
// The kind of the tournament, MTT or SnG // The kind of the tournament, MTT or SnG
var tournamentKind: Int? = null var tournamentType: Int? = null
// The features of the tournament, like Knockout, Shootout, Turbo... // The features of the tournament, like Knockout, Shootout, Turbo...
var tournamentFeatures: RealmList<TournamentFeature> = RealmList() var tournamentFeatures: RealmList<TournamentFeature> = RealmList()
@ -551,8 +551,8 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre
SessionRow.START_DATE -> this.startDate?.shortDateTime() ?: NULL_TEXT SessionRow.START_DATE -> this.startDate?.shortDateTime() ?: NULL_TEXT
SessionRow.TABLE_SIZE -> this.tableSize?.let { TableSize(it).localizedTitle(context) } ?: NULL_TEXT SessionRow.TABLE_SIZE -> this.tableSize?.let { TableSize(it).localizedTitle(context) } ?: NULL_TEXT
SessionRow.TIPS -> result?.tips?.toCurrency() ?: NULL_TEXT SessionRow.TIPS -> result?.tips?.toCurrency() ?: NULL_TEXT
SessionRow.TOURNAMENT_KIND -> this.tournamentKind?.let { SessionRow.TOURNAMENT_TYPE -> this.tournamentType?.let {
TournamentKind.values()[it].localizedTitle(context) TournamentType.values()[it].localizedTitle(context)
} ?: run { } ?: run {
NULL_TEXT NULL_TEXT
} }
@ -693,9 +693,9 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre
// Add current tournament name and tournament names list // Add current tournament name and tournament names list
data.add(RowRepresentableEditDescriptor(tournamentName, data = LiveData.TOURNAMENT_NAME.items(realm))) data.add(RowRepresentableEditDescriptor(tournamentName, data = LiveData.TOURNAMENT_NAME.items(realm)))
} }
SessionRow.TOURNAMENT_KIND -> { SessionRow.TOURNAMENT_TYPE -> {
// Add current tournament kind and tournament kind list // Add current tournament kind and tournament kind list
data.add(RowRepresentableEditDescriptor(tournamentKind, staticData = TournamentKind.values().map { data.add(RowRepresentableEditDescriptor(tournamentType, staticData = TournamentType.values().map {
it it
})) }))
} }
@ -795,7 +795,7 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre
result = localResult result = localResult
} }
SessionRow.TOURNAMENT_NAME -> tournamentName = value as TournamentName? SessionRow.TOURNAMENT_NAME -> tournamentName = value as TournamentName?
SessionRow.TOURNAMENT_KIND -> tournamentKind = value as Int? SessionRow.TOURNAMENT_TYPE -> tournamentType = value as Int?
} }
realm.commitTransaction() realm.commitTransaction()
} }

@ -12,14 +12,9 @@ import kotlinx.android.synthetic.main.fragment_editable_data.*
import kotlinx.android.synthetic.main.fragment_editable_data.view.* import kotlinx.android.synthetic.main.fragment_editable_data.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.TournamentKind
import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.Identifiable
import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.Manageable
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.model.realm.Game
import net.pokeranalytics.android.model.realm.Location
import net.pokeranalytics.android.model.realm.TournamentName
import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
@ -109,10 +104,10 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele
if (this.dataType != null) { if (this.dataType != null) {
val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey)
proxyItem?.let { proxyItem?.let {
this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}" this.appBar.toolbar.title = "Update ${this.liveDataType.localizedTitle(this.parentActivity).toLowerCase().capitalize()}"
isUpdating = true isUpdating = true
} ?: run { } ?: run {
this.appBar.toolbar.title = "New ${this.liveDataType.name.toLowerCase().capitalize()}" this.appBar.toolbar.title = "New ${this.liveDataType.localizedTitle(this.parentActivity).toLowerCase().capitalize()}"
} }
this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey) this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey)
this.rowRepresentableAdapter = RowRepresentableAdapter( this.rowRepresentableAdapter = RowRepresentableAdapter(
@ -154,16 +149,6 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele
finishActivityWithResult(uniqueIdentifier) finishActivityWithResult(uniqueIdentifier)
} }
} else { } else {
/*
val message = when (item) {
is Bankroll -> R.string.empty_name_for_br_error
is Location -> R.string.location_empty_field_error
is Game -> R.string.location_empty_field_error
is TournamentName -> R.string.tt_empty_field_error
is TournamentKind -> R.string.tt_empty_field_error
else -> throw IllegalStateException("Need to manage ${item::class.java} error")
}
*/
val message = (this.item as Savable).getFailedSaveMessage() val message = (this.item as Savable).getFailedSaveMessage()
val builder = AlertDialog.Builder(requireContext()) val builder = AlertDialog.Builder(requireContext())
.setMessage(message) .setMessage(message)
@ -207,31 +192,6 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele
fun setData(dataType: Int, primaryKey: String?) { fun setData(dataType: Int, primaryKey: String?) {
this.dataType = dataType this.dataType = dataType
this.liveDataType = LiveData.values()[dataType] this.liveDataType = LiveData.values()[dataType]
/*
val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey)
proxyItem?.let {
this.appBar.toolbar.title = "Update ${this.liveDataType.localizedTitle(this.parentActivity).toLowerCase().capitalize()}"
isUpdating = true
} ?: run {
this.appBar.toolbar.title = "New ${this.liveDataType.localizedTitle(this.parentActivity).toLowerCase().capitalize()}"
}
this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey)
this.rowRepresentableAdapter = RowRepresentableAdapter(
(this.item as RowRepresentableDataSource),
this
)
this.recyclerView.adapter = rowRepresentableAdapter
// When creating an object, open automatically the keyboard for the first row
if (!isUpdating && this.item is RowRepresentableDataSource) {
val row = (this.item as RowRepresentableDataSource).adapterRows()?.firstOrNull()
row?.let {
onRowSelected(0, it)
}
}
*/
this.primaryKey = primaryKey this.primaryKey = primaryKey
} }

@ -4,17 +4,14 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.RealmResults
import kotlinx.android.synthetic.main.bottom_sheet_list.* import kotlinx.android.synthetic.main.bottom_sheet_list.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.TournamentKind import net.pokeranalytics.android.model.TournamentType
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresentableDataSource, class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresentableDataSource,
RowRepresentableDelegate { RowRepresentableDelegate {
@ -38,7 +35,7 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
this.delegate.onRowValueChanged((row as TournamentKind).ordinal, this.row) this.delegate.onRowValueChanged((row as TournamentType).ordinal, this.row)
dismiss() dismiss()
super.onRowSelected(position, row, fromAction) super.onRowSelected(position, row, fromAction)
} }
@ -69,6 +66,7 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta
adapter = dataAdapter adapter = dataAdapter
} }
this.setAddButtonVisible(false)
} }
} }

@ -25,7 +25,7 @@ enum class SessionRow : RowRepresentable {
LOCATION, LOCATION,
BANKROLL, BANKROLL,
TABLE_SIZE, TABLE_SIZE,
TOURNAMENT_KIND, TOURNAMENT_TYPE,
TOURNAMENT_NAME, TOURNAMENT_NAME,
TOURNAMENT_FEATURE, TOURNAMENT_FEATURE,
START_DATE, START_DATE,
@ -44,7 +44,7 @@ enum class SessionRow : RowRepresentable {
return when (session.getState()) { return when (session.getState()) {
SessionState.PENDING, SessionState.PLANNED -> { SessionState.PENDING, SessionState.PLANNED -> {
arrayListOf( arrayListOf(
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_KIND, TOURNAMENT_NAME, TOURNAMENT_FEATURE, GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE,
START_DATE, END_DATE START_DATE, END_DATE
) )
} }
@ -52,7 +52,7 @@ enum class SessionRow : RowRepresentable {
arrayListOf( arrayListOf(
PRIZE, BUY_IN, POSITION, PLAYERS, TIPS, PRIZE, BUY_IN, POSITION, PLAYERS, TIPS,
SeparatorRowRepresentable(), SeparatorRowRepresentable(),
GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_KIND, TOURNAMENT_NAME, TOURNAMENT_FEATURE, GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE,
SeparatorRowRepresentable(), SeparatorRowRepresentable(),
START_DATE, END_DATE, BREAK_TIME, COMMENT START_DATE, END_DATE, BREAK_TIME, COMMENT
) )
@ -105,7 +105,7 @@ enum class SessionRow : RowRepresentable {
LOCATION -> R.string.location LOCATION -> R.string.location
BANKROLL -> R.string.bankroll BANKROLL -> R.string.bankroll
TABLE_SIZE -> R.string.table_size TABLE_SIZE -> R.string.table_size
TOURNAMENT_KIND -> R.string.tournament_type TOURNAMENT_TYPE -> R.string.tournament_type
TOURNAMENT_NAME -> R.string.tournament_name TOURNAMENT_NAME -> R.string.tournament_name
TOURNAMENT_FEATURE -> R.string.tournament_feature TOURNAMENT_FEATURE -> R.string.tournament_feature
START_DATE -> R.string.start_date START_DATE -> R.string.start_date
@ -120,7 +120,7 @@ enum class SessionRow : RowRepresentable {
return when (this) { return when (this) {
NET_RESULT, PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS, NET_RESULT, PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS,
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT,
TOURNAMENT_KIND, TOURNAMENT_NAME, TOURNAMENT_FEATURE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal
} }
} }
@ -131,7 +131,7 @@ enum class SessionRow : RowRepresentable {
BUY_IN, TIPS -> BottomSheetType.SUM BUY_IN, TIPS -> BottomSheetType.SUM
BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT
GAME -> BottomSheetType.LIST_GAME GAME -> BottomSheetType.LIST_GAME
TOURNAMENT_KIND -> BottomSheetType.LIST_STATIC TOURNAMENT_TYPE -> BottomSheetType.LIST_STATIC
LOCATION, BANKROLL, TOURNAMENT_NAME, TOURNAMENT_FEATURE -> BottomSheetType.LIST LOCATION, BANKROLL, TOURNAMENT_NAME, TOURNAMENT_FEATURE -> BottomSheetType.LIST
TABLE_SIZE -> BottomSheetType.GRID TABLE_SIZE -> BottomSheetType.GRID
COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES

@ -550,7 +550,7 @@
<string name="tournament_completion_percentage_interval">Completion percentage</string> <string name="tournament_completion_percentage_interval">Completion percentage</string>
<string name="tournament_roi">Return on investment</string> <string name="tournament_roi">Return on investment</string>
<string name="tournament_statistic_warning">Results will be filtered on tournaments</string> <string name="tournament_statistic_warning">Results will be filtered on tournaments</string>
<string name="tournament_type">Tournament type</string> <string name="tournament_type">Tournament Type</string>
<string name="tournament_type_complete">Tournament types</string> <string name="tournament_type_complete">Tournament types</string>
<string name="tournament_types">Types</string> <string name="tournament_types">Types</string>
<string name="tournaments">Tournaments</string> <string name="tournaments">Tournaments</string>

Loading…
Cancel
Save