Compare commits
16 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
b1fce6a99d | 6 years ago |
|
|
7abf6fd268 | 6 years ago |
|
|
7474b33a7e | 6 years ago |
|
|
7653ea86ce | 6 years ago |
|
|
c025f35d43 | 6 years ago |
|
|
e8f83ba08b | 6 years ago |
|
|
8835a7d4d6 | 6 years ago |
|
|
5882fd8cd6 | 6 years ago |
|
|
63d6c9b5b9 | 6 years ago |
|
|
20494c7849 | 6 years ago |
|
|
5689b8dfe4 | 6 years ago |
|
|
a2e9b8309c | 6 years ago |
|
|
ac2000ea8c | 6 years ago |
|
|
86a2f3bb1b | 6 years ago |
|
|
fa5e098b31 | 6 years ago |
|
|
fcb69f5711 | 7 years ago |
@ -1,50 +0,0 @@ |
||||
package net.pokeranalytics.android.ui.fragment.components.bottomsheet |
||||
|
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
|
||||
enum class BottomSheetType { |
||||
NONE, |
||||
LIST, |
||||
LIST_STATIC, |
||||
LIST_GAME, |
||||
DOUBLE_LIST, |
||||
MULTI_SELECTION, |
||||
GRID, |
||||
EDIT_TEXT, |
||||
EDIT_TEXT_MULTI_LINES, |
||||
DOUBLE_EDIT_TEXT, |
||||
NUMERIC_TEXT, |
||||
SUM; |
||||
|
||||
fun newInstance(row: RowRepresentable): BottomSheetFragment { |
||||
return when (this) { |
||||
NONE -> BottomSheetFragment(row) |
||||
LIST -> BottomSheetListFragment(row) |
||||
LIST_STATIC -> BottomSheetStaticListFragment(row) |
||||
LIST_GAME -> BottomSheetListGameFragment(row) |
||||
DOUBLE_LIST -> BottomSheetListGameFragment(row) |
||||
MULTI_SELECTION -> BottomSheetMultiSelectionFragment(row) |
||||
GRID -> BottomSheetTableSizeGridFragment(row) |
||||
EDIT_TEXT -> BottomSheetEditTextFragment(row) |
||||
EDIT_TEXT_MULTI_LINES -> BottomSheetEditTextMultiLinesFragment(row) |
||||
DOUBLE_EDIT_TEXT -> BottomSheetDoubleEditTextFragment(row) |
||||
NUMERIC_TEXT -> BottomSheetNumericTextFragment(row) |
||||
SUM -> BottomSheetSumFragment(row) |
||||
} |
||||
} |
||||
|
||||
val validationRequired: Boolean |
||||
get() = when (this) { |
||||
LIST, LIST_GAME, LIST_STATIC, GRID, DOUBLE_LIST -> false |
||||
else -> true |
||||
} |
||||
|
||||
val clearRequired: Boolean |
||||
get() = true |
||||
|
||||
val addRequired: Boolean |
||||
get() = when (this) { |
||||
EDIT_TEXT, NUMERIC_TEXT, DOUBLE_EDIT_TEXT, EDIT_TEXT_MULTI_LINES, GRID, LIST_STATIC, SUM -> false |
||||
else -> true |
||||
} |
||||
} |
||||
@ -0,0 +1,50 @@ |
||||
package net.pokeranalytics.android.ui.fragment.components.input |
||||
|
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
|
||||
enum class InputFragmentType { |
||||
NONE, |
||||
LIST, |
||||
LIST_STATIC, |
||||
LIST_GAME, |
||||
DOUBLE_LIST, |
||||
MULTI_SELECTION, |
||||
GRID, |
||||
EDIT_TEXT, |
||||
EDIT_TEXT_MULTI_LINES, |
||||
DOUBLE_EDIT_TEXT, |
||||
NUMERIC_TEXT, |
||||
SUM; |
||||
|
||||
fun newInstance(row: RowRepresentable): InputFragment { |
||||
return when (this) { |
||||
NONE -> InputFragment(row) |
||||
LIST -> InputListFragment(row) |
||||
LIST_STATIC -> InputStaticListFragment(row) |
||||
LIST_GAME -> InputListGameFragment(row) |
||||
DOUBLE_LIST -> InputListGameFragment(row) |
||||
MULTI_SELECTION -> InputMultiSelectionFragment(row) |
||||
GRID -> InputTableSizeGridFragment(row) |
||||
EDIT_TEXT -> InputEditTextFragment(row) |
||||
EDIT_TEXT_MULTI_LINES -> InputEditTextMultiLinesFragment(row) |
||||
DOUBLE_EDIT_TEXT -> InputDoubleEditTextFragment(row) |
||||
NUMERIC_TEXT -> InputNumericTextFragment(row) |
||||
SUM -> InputSumFragment(row) |
||||
} |
||||
} |
||||
|
||||
val validationRequired: Boolean |
||||
get() = when (this) { |
||||
LIST, LIST_GAME, LIST_STATIC, GRID, DOUBLE_LIST -> false |
||||
else -> true |
||||
} |
||||
|
||||
val clearRequired: Boolean |
||||
get() = true |
||||
|
||||
val addRequired: Boolean |
||||
get() = when (this) { |
||||
EDIT_TEXT, NUMERIC_TEXT, DOUBLE_EDIT_TEXT, EDIT_TEXT_MULTI_LINES, GRID, LIST_STATIC, SUM -> false |
||||
else -> true |
||||
} |
||||
} |
||||
@ -0,0 +1,93 @@ |
||||
package net.pokeranalytics.android.ui.view |
||||
|
||||
import io.realm.RealmResults |
||||
import net.pokeranalytics.android.exceptions.PokerAnalyticsException |
||||
import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException |
||||
import net.pokeranalytics.android.util.UserDefaults |
||||
import java.util.* |
||||
import kotlin.collections.ArrayList |
||||
|
||||
/** |
||||
* An container class to describe the way an field of an object will be edited |
||||
*/ |
||||
|
||||
enum class RowEditableDescriptorType { |
||||
DATE, |
||||
DATA, |
||||
STATIC, |
||||
DEFAULT |
||||
} |
||||
|
||||
open class RowEditableDescriptor(var defaultValue: Any? = null, |
||||
var hint: Int? = null, |
||||
var inputType: Int? = null) |
||||
|
||||
class DateRowEditableDescriptor(date: Date? = null, |
||||
val minimumDate: Date? = null, |
||||
var onlyDate: Boolean = false, |
||||
var onlyTime: Boolean = false): RowEditableDescriptor(defaultValue = date) { |
||||
val date: Date? |
||||
get() { |
||||
return defaultValue as Date? |
||||
} |
||||
} |
||||
|
||||
class DataRowEditableDescriptor( |
||||
defaultValue: Any? = null, |
||||
hint: Int? = null, |
||||
inputType: Int? = null, |
||||
data: RealmResults<*>? = null): RowEditableDescriptor(defaultValue, hint, inputType) { |
||||
|
||||
var data: RealmResults<RowRepresentable>? = null |
||||
|
||||
init { |
||||
if (data != null && data.count() > 0) { |
||||
if (data.first() is RowRepresentable) { |
||||
this.data = data as RealmResults<RowRepresentable>? |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
class StaticDataRowEditableDescriptor( |
||||
defaultValue: Any? = null, |
||||
hint: Int? = null, |
||||
inputType: Int? = null, |
||||
var staticData: List<RowRepresentable>? = null): RowEditableDescriptor(defaultValue, hint, inputType) { |
||||
} |
||||
|
||||
class RowEditableDataSource(customCurrency: Currency? = null) { |
||||
var currency: Currency = UserDefaults.currency |
||||
|
||||
init { |
||||
customCurrency?.let { currency = it } |
||||
} |
||||
|
||||
var descriptors = ArrayList<RowEditableDescriptor>() |
||||
|
||||
fun append(defaultValue: Any? = null, hint: Int? = null, inputType: Int? = null, data: RealmResults<*>? = null, staticData: List<RowRepresentable>? = null) { |
||||
when { |
||||
data != null -> descriptors.add(DataRowEditableDescriptor(defaultValue, hint, inputType, data)) |
||||
staticData != null -> descriptors.add(StaticDataRowEditableDescriptor(defaultValue, hint, inputType, staticData)) |
||||
else -> descriptors.add(RowEditableDescriptor(defaultValue, hint, inputType)) |
||||
} |
||||
} |
||||
|
||||
fun appendDateDescriptor(date:Date?= null, |
||||
minimumDate: Date? = null, |
||||
onlyDate: Boolean = false, |
||||
onlyTime: Boolean = false) { |
||||
descriptors.add(DateRowEditableDescriptor(date, minimumDate, onlyDate, onlyTime)) |
||||
} |
||||
|
||||
val descriptorType: RowEditableDescriptorType |
||||
get() { |
||||
return when (descriptors.firstOrNull()) { |
||||
null -> throw RowRepresentableEditDescriptorException("RowEditableDescriptor inconsistency") |
||||
is DateRowEditableDescriptor -> RowEditableDescriptorType.DATE |
||||
is DataRowEditableDescriptor -> RowEditableDescriptorType.DATA |
||||
is StaticDataRowEditableDescriptor -> RowEditableDescriptorType.STATIC |
||||
else -> RowEditableDescriptorType.DEFAULT |
||||
} |
||||
} |
||||
} |
||||
@ -1,14 +0,0 @@ |
||||
package net.pokeranalytics.android.ui.view |
||||
|
||||
import io.realm.RealmResults |
||||
|
||||
/** |
||||
* An container class to describe the way an field of an object will be edited |
||||
*/ |
||||
class RowRepresentableEditDescriptor( |
||||
var defaultValue: Any? = null, |
||||
var hint: Int? = null, |
||||
var inputType: Int? = null, |
||||
var data: RealmResults<RowRepresentable>? = null, |
||||
var staticData: List<RowRepresentable>? = null |
||||
) |
||||
@ -1,315 +1,286 @@ |
||||
package net.pokeranalytics.android.ui.view.rowrepresentable |
||||
|
||||
import android.text.InputType |
||||
import io.realm.RealmResults |
||||
import android.widget.Toast |
||||
import androidx.fragment.app.Fragment |
||||
import net.pokeranalytics.android.R |
||||
import net.pokeranalytics.android.model.TournamentType |
||||
import net.pokeranalytics.android.model.extensions.SessionState |
||||
import net.pokeranalytics.android.model.extensions.getState |
||||
import net.pokeranalytics.android.model.realm.Session |
||||
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType |
||||
import net.pokeranalytics.android.model.realm.* |
||||
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragment |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType |
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor |
||||
import net.pokeranalytics.android.ui.view.RowEditableDataSource |
||||
import net.pokeranalytics.android.ui.view.RowViewType |
||||
import net.pokeranalytics.android.util.extensions.round |
||||
import net.pokeranalytics.android.util.extensions.sorted |
||||
import java.util.* |
||||
|
||||
|
||||
enum class SessionRow : RowRepresentable { |
||||
|
||||
PRIZE, |
||||
CASHED_OUT, |
||||
NET_RESULT, |
||||
INITIAL_BUY_IN, |
||||
BUY_IN, |
||||
POSITION, |
||||
PLAYERS, |
||||
TIPS, |
||||
PRIZE, |
||||
CASHED_OUT, |
||||
NET_RESULT, |
||||
INITIAL_BUY_IN, |
||||
BUY_IN, |
||||
POSITION, |
||||
PLAYERS, |
||||
TIPS, |
||||
|
||||
GAME, |
||||
BLINDS, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
TOURNAMENT_TYPE, |
||||
TOURNAMENT_NAME, |
||||
TOURNAMENT_FEATURE, |
||||
START_DATE, |
||||
END_DATE, |
||||
GAME, |
||||
BLINDS, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
TOURNAMENT_TYPE, |
||||
TOURNAMENT_NAME, |
||||
TOURNAMENT_FEATURE, |
||||
START_DATE, |
||||
END_DATE, |
||||
|
||||
BREAK_TIME, |
||||
COMMENT; |
||||
BREAK_TIME, |
||||
COMMENT; |
||||
|
||||
companion object { |
||||
/** |
||||
* Return the rows to display for the current session state |
||||
*/ |
||||
fun getRows(session: Session): List<RowRepresentable> { |
||||
when (session.type) { |
||||
Session.Type.TOURNAMENT.ordinal -> { |
||||
return when (session.getState()) { |
||||
SessionState.PENDING, SessionState.PLANNED -> { |
||||
arrayListOf( |
||||
GAME, |
||||
INITIAL_BUY_IN, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
TOURNAMENT_TYPE, |
||||
TOURNAMENT_NAME, |
||||
TOURNAMENT_FEATURE, |
||||
START_DATE, |
||||
END_DATE |
||||
) |
||||
} |
||||
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { |
||||
arrayListOf( |
||||
PRIZE, |
||||
BUY_IN, |
||||
POSITION, |
||||
PLAYERS, |
||||
TIPS, |
||||
COMMENT, |
||||
SeparatorRow(), |
||||
GAME, |
||||
INITIAL_BUY_IN, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
TOURNAMENT_TYPE, |
||||
TOURNAMENT_NAME, |
||||
TOURNAMENT_FEATURE, |
||||
SeparatorRow(), |
||||
START_DATE, |
||||
END_DATE, |
||||
BREAK_TIME |
||||
) |
||||
} |
||||
} |
||||
} |
||||
Session.Type.CASH_GAME.ordinal -> { |
||||
when (session.getState()) { |
||||
SessionState.PENDING, SessionState.PLANNED -> { |
||||
return arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE) |
||||
} |
||||
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { |
||||
companion object { |
||||
/** |
||||
* Return the rows to display for the current session state |
||||
*/ |
||||
fun getRows(session: Session): List<RowRepresentable> { |
||||
when (session.type) { |
||||
Session.Type.TOURNAMENT.ordinal -> { |
||||
return when (session.getState()) { |
||||
SessionState.PENDING, SessionState.PLANNED -> { |
||||
arrayListOf( |
||||
GAME, |
||||
INITIAL_BUY_IN, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
TOURNAMENT_TYPE, |
||||
TOURNAMENT_NAME, |
||||
TOURNAMENT_FEATURE, |
||||
START_DATE, |
||||
END_DATE |
||||
) |
||||
} |
||||
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { |
||||
arrayListOf( |
||||
PRIZE, |
||||
BUY_IN, |
||||
POSITION, |
||||
PLAYERS, |
||||
TIPS, |
||||
COMMENT, |
||||
SeparatorRow(), |
||||
GAME, |
||||
INITIAL_BUY_IN, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
TOURNAMENT_TYPE, |
||||
TOURNAMENT_NAME, |
||||
TOURNAMENT_FEATURE, |
||||
SeparatorRow(), |
||||
START_DATE, |
||||
END_DATE, |
||||
BREAK_TIME |
||||
) |
||||
} |
||||
} |
||||
} |
||||
Session.Type.CASH_GAME.ordinal -> { |
||||
when (session.getState()) { |
||||
SessionState.PENDING, SessionState.PLANNED -> { |
||||
return arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE) |
||||
} |
||||
SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { |
||||
|
||||
val fields = mutableListOf<RowRepresentable>() |
||||
when { |
||||
session.hasBuyin -> fields.addAll(listOf(CASHED_OUT, BUY_IN, TIPS)) |
||||
session.hasNetResult -> fields.add(NET_RESULT) |
||||
session.isLive -> fields.addAll(listOf(CASHED_OUT, BUY_IN, TIPS)) |
||||
else -> fields.add(NET_RESULT) |
||||
} |
||||
fields.add(COMMENT) |
||||
fields.add(SeparatorRow()) |
||||
fields.addAll(listOf( |
||||
GAME, |
||||
BLINDS, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
START_DATE, |
||||
END_DATE, |
||||
BREAK_TIME |
||||
val fields = mutableListOf<RowRepresentable>() |
||||
when { |
||||
session.hasBuyin -> fields.addAll(listOf(CASHED_OUT, BUY_IN, TIPS)) |
||||
session.hasNetResult -> fields.add(NET_RESULT) |
||||
session.isLive -> fields.addAll(listOf(CASHED_OUT, BUY_IN, TIPS)) |
||||
else -> fields.add(NET_RESULT) |
||||
} |
||||
fields.add(COMMENT) |
||||
fields.add(SeparatorRow()) |
||||
fields.addAll( |
||||
listOf( |
||||
GAME, |
||||
BLINDS, |
||||
LOCATION, |
||||
BANKROLL, |
||||
TABLE_SIZE, |
||||
START_DATE, |
||||
END_DATE, |
||||
BREAK_TIME |
||||
|
||||
) |
||||
) |
||||
return fields |
||||
} |
||||
} |
||||
} |
||||
} |
||||
return arrayListOf() |
||||
} |
||||
} |
||||
) |
||||
) |
||||
return fields |
||||
} |
||||
} |
||||
} |
||||
} |
||||
return arrayListOf() |
||||
} |
||||
} |
||||
|
||||
override val resId: Int? |
||||
get() { |
||||
return when (this) { |
||||
NET_RESULT -> R.string.net_result |
||||
PRIZE -> R.string.prize |
||||
POSITION -> R.string.position |
||||
PLAYERS -> R.string.players |
||||
CASHED_OUT -> R.string.cashed_out |
||||
INITIAL_BUY_IN -> R.string.initial_stack |
||||
BUY_IN -> R.string.buyin |
||||
TIPS -> R.string.tips |
||||
GAME -> R.string.game |
||||
BLINDS -> R.string.blinds |
||||
LOCATION -> R.string.location |
||||
BANKROLL -> R.string.bankroll |
||||
TABLE_SIZE -> R.string.table_size |
||||
TOURNAMENT_TYPE -> R.string.tournament_type |
||||
TOURNAMENT_NAME -> R.string.tournament_name |
||||
TOURNAMENT_FEATURE -> R.string.tournament_feature |
||||
START_DATE -> R.string.start_date |
||||
END_DATE -> R.string.end_date |
||||
BREAK_TIME -> R.string.break_time |
||||
COMMENT -> R.string.comment |
||||
} |
||||
} |
||||
override val resId: Int? |
||||
get() { |
||||
return when (this) { |
||||
NET_RESULT -> R.string.net_result |
||||
PRIZE -> R.string.prize |
||||
POSITION -> R.string.position |
||||
PLAYERS -> R.string.players |
||||
CASHED_OUT -> R.string.cashed_out |
||||
INITIAL_BUY_IN -> R.string.initial_stack |
||||
BUY_IN -> R.string.buyin |
||||
TIPS -> R.string.tips |
||||
GAME -> R.string.game |
||||
BLINDS -> R.string.blinds |
||||
LOCATION -> R.string.location |
||||
BANKROLL -> R.string.bankroll |
||||
TABLE_SIZE -> R.string.table_size |
||||
TOURNAMENT_TYPE -> R.string.tournament_type |
||||
TOURNAMENT_NAME -> R.string.tournament_name |
||||
TOURNAMENT_FEATURE -> R.string.tournament_feature |
||||
START_DATE -> R.string.start_date |
||||
END_DATE -> R.string.end_date |
||||
BREAK_TIME -> R.string.break_time |
||||
COMMENT -> R.string.comment |
||||
} |
||||
} |
||||
|
||||
override val viewType: Int |
||||
get() { |
||||
return when (this) { |
||||
NET_RESULT, PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS, |
||||
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, |
||||
TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal |
||||
} |
||||
} |
||||
override val viewType: Int |
||||
get() { |
||||
return when (this) { |
||||
NET_RESULT, PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS, |
||||
GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, |
||||
TOURNAMENT_TYPE, TOURNAMENT_NAME, TOURNAMENT_FEATURE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal |
||||
} |
||||
} |
||||
|
||||
override val bottomSheetType: BottomSheetType |
||||
get() { |
||||
return when (this) { |
||||
NET_RESULT, CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.NUMERIC_TEXT |
||||
BUY_IN, TIPS -> BottomSheetType.SUM |
||||
BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT |
||||
GAME -> BottomSheetType.LIST_GAME |
||||
TOURNAMENT_TYPE -> BottomSheetType.LIST_STATIC |
||||
LOCATION, BANKROLL, TOURNAMENT_NAME -> BottomSheetType.LIST |
||||
TOURNAMENT_FEATURE -> BottomSheetType.MULTI_SELECTION |
||||
TABLE_SIZE -> BottomSheetType.GRID |
||||
COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES |
||||
else -> BottomSheetType.NONE |
||||
} |
||||
} |
||||
override val inputFragmentType: InputFragmentType |
||||
get() { |
||||
return when (this) { |
||||
NET_RESULT, CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> InputFragmentType.NUMERIC_TEXT |
||||
BUY_IN, TIPS -> InputFragmentType.SUM |
||||
BLINDS -> InputFragmentType.DOUBLE_EDIT_TEXT |
||||
GAME -> InputFragmentType.LIST_GAME |
||||
TOURNAMENT_TYPE -> InputFragmentType.LIST_STATIC |
||||
LOCATION, BANKROLL, TOURNAMENT_NAME -> InputFragmentType.LIST |
||||
TOURNAMENT_FEATURE -> InputFragmentType.MULTI_SELECTION |
||||
TABLE_SIZE -> InputFragmentType.GRID |
||||
COMMENT -> InputFragmentType.EDIT_TEXT_MULTI_LINES |
||||
else -> InputFragmentType.NONE |
||||
} |
||||
} |
||||
|
||||
|
||||
override fun editingDescriptors(map: Map<String, Any?>): ArrayList<RowRepresentableEditDescriptor>? { |
||||
return when (this) { |
||||
BLINDS -> { |
||||
val sb: String? by map |
||||
val bb: String? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor( |
||||
sb, R.string.smallblind, InputType.TYPE_CLASS_NUMBER |
||||
or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
), |
||||
RowRepresentableEditDescriptor( |
||||
bb, R.string.bigblind, InputType.TYPE_CLASS_NUMBER |
||||
or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
) |
||||
) |
||||
} |
||||
BUY_IN -> { |
||||
val bb: Double? by map |
||||
val fee: Double? by map |
||||
val ratedBuyin: Double? by map |
||||
val data = arrayListOf<RowRepresentableEditDescriptor>() |
||||
if (bb != null) { |
||||
data.add(RowRepresentableEditDescriptor(100.0 * (bb ?: 0.0))) |
||||
data.add(RowRepresentableEditDescriptor(200.0 * (bb ?: 0.0))) |
||||
} else if (fee != null) { |
||||
data.add(RowRepresentableEditDescriptor((fee ?: 0.0) * 1.0)) |
||||
data.add(RowRepresentableEditDescriptor((fee ?: 0.0) * 2.0)) |
||||
} else { |
||||
data.add(RowRepresentableEditDescriptor(0)) |
||||
data.add(RowRepresentableEditDescriptor(0)) |
||||
} |
||||
override fun startEditing(dataSource: Any?, parent: Fragment?) { |
||||
if (dataSource == null) return |
||||
if (dataSource !is Session) return |
||||
if (parent == null) return |
||||
if (parent !is RowRepresentableDelegate) return |
||||
|
||||
data.add(RowRepresentableEditDescriptor(ratedBuyin)) |
||||
data.add( |
||||
RowRepresentableEditDescriptor( |
||||
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
) |
||||
) |
||||
data.add( |
||||
RowRepresentableEditDescriptor( |
||||
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
) |
||||
) |
||||
data |
||||
} |
||||
CASHED_OUT, PRIZE, NET_RESULT -> { |
||||
val defaultValue: Double? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor( |
||||
defaultValue, |
||||
inputType = InputType.TYPE_CLASS_NUMBER |
||||
or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
or InputType.TYPE_NUMBER_FLAG_SIGNED |
||||
) |
||||
) |
||||
} |
||||
COMMENT -> { |
||||
val defaultValue: String? by map |
||||
arrayListOf(RowRepresentableEditDescriptor(defaultValue, R.string.comment)) |
||||
} |
||||
BREAK_TIME -> { |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor( |
||||
hint = R.string.in_minutes, inputType = InputType.TYPE_CLASS_NUMBER |
||||
) |
||||
) |
||||
} |
||||
GAME -> { |
||||
val limit: Int? by map |
||||
val defaultValue: Any? by map |
||||
val data: RealmResults<RowRepresentable>? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor(limit), |
||||
RowRepresentableEditDescriptor(defaultValue, data = data) |
||||
) |
||||
} |
||||
INITIAL_BUY_IN -> { |
||||
val defaultValue: Double? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor(defaultValue?.round(), inputType = InputType.TYPE_CLASS_NUMBER) |
||||
) |
||||
} |
||||
BANKROLL, LOCATION, TOURNAMENT_FEATURE, TOURNAMENT_NAME -> { |
||||
val defaultValue: Any? by map |
||||
val data: RealmResults<RowRepresentable>? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor(defaultValue, data = data) |
||||
) |
||||
} |
||||
PLAYERS -> { |
||||
val defaultValue: Int? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor( |
||||
defaultValue?.toString(), |
||||
inputType = InputType.TYPE_CLASS_NUMBER |
||||
) |
||||
) |
||||
} |
||||
POSITION -> { |
||||
val defaultValue: Int? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor( |
||||
defaultValue, |
||||
inputType = InputType.TYPE_CLASS_NUMBER |
||||
) |
||||
) |
||||
} |
||||
TABLE_SIZE -> { |
||||
val defaultValue: Int? by map |
||||
arrayListOf(RowRepresentableEditDescriptor(defaultValue)) |
||||
} |
||||
TIPS -> { |
||||
val sb: String? by map |
||||
val bb: String? by map |
||||
val tips: Double? by map |
||||
val session: Session = dataSource |
||||
|
||||
// Disable the buttons with value = 0, add current value & set the 2 edit texts |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor(sb ?: 0.0), |
||||
RowRepresentableEditDescriptor(bb ?: 0.0), |
||||
RowRepresentableEditDescriptor(tips ?: 0.0), |
||||
RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER), |
||||
RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER) |
||||
) |
||||
} |
||||
TOURNAMENT_TYPE -> { |
||||
val defaultValue: Any? by map |
||||
arrayListOf( |
||||
RowRepresentableEditDescriptor(defaultValue, staticData = TournamentType.values().map { |
||||
it |
||||
}) |
||||
) |
||||
} |
||||
else -> null |
||||
} |
||||
} |
||||
val data = RowEditableDataSource(session.currency) |
||||
when (this) { |
||||
START_DATE -> { |
||||
data.appendDateDescriptor(session.startDate) |
||||
} |
||||
END_DATE -> { |
||||
if (session.startDate == null) { |
||||
Toast.makeText(parent.context, R.string.session_missing_start_date, Toast.LENGTH_SHORT).show() |
||||
return |
||||
} else { |
||||
data.appendDateDescriptor(session.endDate ?: session.startDate ?: Date(), session.startDate) |
||||
} |
||||
} |
||||
|
||||
BANKROLL -> data.append(session.bankroll, data = session.realm.sorted<Bankroll>()) |
||||
CASHED_OUT, PRIZE -> data.append( |
||||
session.result?.cashout, |
||||
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_NUMBER_FLAG_SIGNED |
||||
) |
||||
NET_RESULT -> data.append( |
||||
session.result?.netResult, |
||||
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL or InputType.TYPE_NUMBER_FLAG_SIGNED |
||||
) |
||||
INITIAL_BUY_IN -> data.append(session.tournamentEntryFee?.round(), inputType = InputType.TYPE_CLASS_NUMBER) |
||||
BUY_IN -> { |
||||
val bb: Double? = session.cgBigBlind |
||||
val fee: Double? = session.tournamentEntryFee |
||||
val ratedBuyin: Double? = session.result?.buyin |
||||
if (bb != null) { |
||||
data.append(100.0 * bb) |
||||
data.append(200.0 * bb) |
||||
} else if (fee != null) { |
||||
data.append(fee) |
||||
data.append(fee * 2.0) |
||||
} else { |
||||
data.append(0) |
||||
data.append(0) |
||||
} |
||||
data.append(ratedBuyin) |
||||
data.append(inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL) |
||||
data.append(inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL) |
||||
} |
||||
POSITION -> data.append(session.result?.tournamentFinalPosition, inputType = InputType.TYPE_CLASS_NUMBER) |
||||
PLAYERS -> data.append( |
||||
session.tournamentNumberOfPlayers.toString(), |
||||
inputType = InputType.TYPE_CLASS_NUMBER |
||||
) |
||||
TIPS -> { |
||||
val sb: String? = session.cgSmallBlind?.round() |
||||
val bb: String? = session.cgBigBlind?.round() |
||||
val tips: Double? = session.result?.tips |
||||
data.append(sb ?: 0.0) |
||||
data.append(bb ?: 0.0) |
||||
data.append(tips ?: 0.0) |
||||
data.append("", inputType = InputType.TYPE_CLASS_NUMBER) |
||||
data.append("", inputType = InputType.TYPE_CLASS_NUMBER) |
||||
} |
||||
GAME -> { |
||||
data.append(session.limit) |
||||
data.append(session.game, data = session.realm.sorted<Game>()) |
||||
} |
||||
BLINDS -> { |
||||
data.append( |
||||
session.cgSmallBlind?.round(), |
||||
R.string.smallblind, |
||||
InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
) |
||||
data.append( |
||||
session.cgBigBlind?.round(), |
||||
R.string.bigblind, |
||||
InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL |
||||
) |
||||
} |
||||
LOCATION -> data.append(session.location, data = session.realm.sorted<Location>()) |
||||
TABLE_SIZE -> data.append(session.tableSize) |
||||
TOURNAMENT_TYPE -> data.append(session.tournamentType, staticData = TournamentType.values().map { it }) |
||||
TOURNAMENT_NAME -> data.append(session.tournamentName, data = session.realm.sorted<TournamentName>()) |
||||
TOURNAMENT_FEATURE -> data.append( |
||||
session.tournamentFeatures, |
||||
data = session.realm.sorted<TournamentFeature>() |
||||
) |
||||
BREAK_TIME -> data.append(hint = R.string.in_minutes, inputType = InputType.TYPE_CLASS_NUMBER) |
||||
COMMENT -> data.append(session.comment, R.string.comment) |
||||
} |
||||
InputFragment.buildAndShow(this, parent, data) |
||||
} |
||||
|
||||
override val valueCanBeClearedWhenEditing: Boolean |
||||
get() { |
||||
return when (this) { |
||||
BANKROLL -> false |
||||
else -> true |
||||
} |
||||
} |
||||
} |
||||
@ -1,16 +1,15 @@ |
||||
package net.pokeranalytics.android.ui.view.rowrepresentable |
||||
|
||||
import net.pokeranalytics.android.R |
||||
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType |
||||
import net.pokeranalytics.android.ui.view.DefaultEditDataSource |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType |
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
import net.pokeranalytics.android.ui.view.RowViewType |
||||
|
||||
|
||||
enum class SimpleRow : RowRepresentable, DefaultEditDataSource { |
||||
enum class SimpleRow : RowRepresentable { |
||||
NAME; |
||||
|
||||
override val resId: Int? = R.string.name |
||||
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal |
||||
override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT |
||||
override val inputFragmentType: InputFragmentType = InputFragmentType.EDIT_TEXT |
||||
} |
||||
@ -1,6 +1,49 @@ |
||||
package net.pokeranalytics.android.ui.view.rowrepresentable |
||||
|
||||
import net.pokeranalytics.android.ui.view.DefaultEditDataSource |
||||
import androidx.fragment.app.Fragment |
||||
import net.pokeranalytics.android.R |
||||
import net.pokeranalytics.android.model.realm.TournamentFeature |
||||
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragment |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType |
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
import net.pokeranalytics.android.ui.view.RowEditableDataSource |
||||
import net.pokeranalytics.android.ui.view.RowViewType |
||||
|
||||
enum class TournamentFeatureRow : RowRepresentable, DefaultEditDataSource |
||||
enum class TournamentFeatureRow : RowRepresentable { |
||||
NAME; |
||||
|
||||
override val resId: Int? |
||||
get() { |
||||
return when (this) { |
||||
NAME -> R.string.name |
||||
} |
||||
} |
||||
|
||||
override val viewType: Int |
||||
get() { |
||||
return when (this) { |
||||
NAME -> RowViewType.TITLE_VALUE.ordinal |
||||
} |
||||
} |
||||
|
||||
override val inputFragmentType: InputFragmentType |
||||
get() { |
||||
return when (this) { |
||||
NAME -> InputFragmentType.EDIT_TEXT |
||||
} |
||||
} |
||||
|
||||
override fun startEditing(dataSource: Any?, parent: Fragment?) { |
||||
if (dataSource == null) return |
||||
if (dataSource !is TournamentFeature) return |
||||
if (parent == null) return |
||||
if (parent !is RowRepresentableDelegate) return |
||||
val data = RowEditableDataSource() |
||||
when (this) { |
||||
NAME -> data.append(dataSource.name) |
||||
} |
||||
InputFragment.buildAndShow(this, parent, data) |
||||
} |
||||
|
||||
} |
||||
|
||||
@ -1,6 +1,49 @@ |
||||
package net.pokeranalytics.android.ui.view.rowrepresentable |
||||
|
||||
import net.pokeranalytics.android.ui.view.DefaultEditDataSource |
||||
import androidx.fragment.app.Fragment |
||||
import net.pokeranalytics.android.R |
||||
import net.pokeranalytics.android.model.realm.TournamentName |
||||
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragment |
||||
import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType |
||||
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||
import net.pokeranalytics.android.ui.view.RowEditableDataSource |
||||
import net.pokeranalytics.android.ui.view.RowViewType |
||||
|
||||
enum class TournamentNameRow : RowRepresentable, DefaultEditDataSource |
||||
enum class TournamentNameRow : RowRepresentable { |
||||
NAME; |
||||
|
||||
override val resId: Int? |
||||
get() { |
||||
return when (this) { |
||||
NAME -> R.string.name |
||||
} |
||||
} |
||||
|
||||
override val viewType: Int |
||||
get() { |
||||
return when (this) { |
||||
NAME -> RowViewType.TITLE_VALUE.ordinal |
||||
} |
||||
} |
||||
|
||||
override val inputFragmentType: InputFragmentType |
||||
get() { |
||||
return when (this) { |
||||
NAME -> InputFragmentType.EDIT_TEXT |
||||
} |
||||
} |
||||
|
||||
override fun startEditing(dataSource: Any?, parent: Fragment?) { |
||||
if (dataSource == null) return |
||||
if (dataSource !is TournamentName) return |
||||
if (parent == null) return |
||||
if (parent !is RowRepresentableDelegate) return |
||||
val data = RowEditableDataSource() |
||||
when (this) { |
||||
NAME -> data.append(dataSource.name) |
||||
} |
||||
InputFragment.buildAndShow(this, parent, data) |
||||
} |
||||
|
||||
} |
||||
@ -1,36 +0,0 @@ |
||||
package net.pokeranalytics.android.util |
||||
|
||||
import android.content.Context |
||||
import java.util.* |
||||
|
||||
|
||||
|
||||
class LocaleUtils { |
||||
|
||||
companion object { |
||||
|
||||
/** |
||||
* Return the current locale |
||||
*/ |
||||
fun getCurrentLocale(context: Context) : Locale { |
||||
val defaultLocaleCode = Preferences.getString(Preferences.Keys.LOCALE_CODE, context) |
||||
var locale = Locale.getDefault() |
||||
if (defaultLocaleCode != null) { |
||||
locale = Locale(defaultLocaleCode) |
||||
Locale.setDefault(locale) |
||||
} |
||||
return locale |
||||
} |
||||
|
||||
|
||||
/** |
||||
* |
||||
*/ |
||||
fun setCurrentLocale(context: Context, language: String) { |
||||
Preferences.setString(Preferences.Keys.LOCALE_CODE, language, context) |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue