From ee5b8e2fcc73aa400319442f9d640235b2db7736 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 10:48:43 +0100 Subject: [PATCH 01/15] Add custom tabs --- app/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 14abd0a3..9e4dc5e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,13 +44,14 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - // Android implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.1.0-alpha04' implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' + implementation 'androidx.browser:browser:1.0.0' + // Places implementation 'com.google.android.libraries.places:places:1.0.0' From 89f6200aede11560db1d2d0e525a60a2514593ec Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 10:48:57 +0100 Subject: [PATCH 02/15] Add new row type --- .../android/ui/view/RowViewType.kt | 8 ++++ app/src/main/res/layout/row_title_arrow.xml | 47 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 app/src/main/res/layout/row_title_arrow.xml 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 4e46a53e..78bc4193 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 @@ -43,6 +43,7 @@ enum class RowViewType { HEADER_SESSION, EDIT_TEXT, TITLE, + TITLE_ARROW, TITLE_VALUE, TITLE_VALUE_ACTION, TITLE_SWITCH, @@ -86,6 +87,13 @@ enum class RowViewType { false ) ) + TITLE_ARROW -> TitleViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.row_title_arrow, + parent, + false + ) + ) TITLE_VALUE -> TitleValueViewHolder( LayoutInflater.from(parent.context).inflate( R.layout.row_title_value, diff --git a/app/src/main/res/layout/row_title_arrow.xml b/app/src/main/res/layout/row_title_arrow.xml new file mode 100644 index 00000000..069d72bb --- /dev/null +++ b/app/src/main/res/layout/row_title_arrow.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + \ No newline at end of file From 85ca451541aa9c754d2d948193e0796d03a753a6 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 10:49:07 +0100 Subject: [PATCH 03/15] Improve Settings --- .../android/ui/fragment/SettingsFragment.kt | 12 +++++ .../ui/view/rowrepresentable/SettingRow.kt | 2 +- .../net/pokeranalytics/android/util/Global.kt | 5 ++ .../android/util/UIExtensions.kt | 51 +++++++++++++++++-- 4 files changed, 65 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 22376bc3..5341c686 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -10,15 +10,19 @@ import kotlinx.android.synthetic.main.fragment_settings.* import net.pokeranalytics.android.BuildConfig import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.DataListActivity +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow +import net.pokeranalytics.android.util.* class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, StaticRowRepresentableDataSource { + private lateinit var parentActivity: PokerAnalyticsActivity + companion object { /** @@ -60,6 +64,12 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { when (row) { + SettingRow.RATE_APP -> parentActivity.openPlayStorePage() + SettingRow.CONTACT_US -> parentActivity.openContactMail() + SettingRow.BUG_REPORT -> Toast.makeText(requireContext(), "Bug report", Toast.LENGTH_SHORT).show() + SettingRow.CURRENCY -> Toast.makeText(requireContext(), "Currency", Toast.LENGTH_SHORT).show() + SettingRow.PRIVACY_POLICY -> parentActivity.openUrl(URL_PRIVACY_POLICY) + SettingRow.TERMS_OF_USE -> parentActivity.openUrl(URL_TERMS) SettingRow.GDPR -> Toast.makeText(requireContext(), "Show GDPR", Toast.LENGTH_SHORT).show() } @@ -73,6 +83,8 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta */ private fun initData() { + parentActivity = activity as PokerAnalyticsActivity + val viewManager = LinearLayoutManager(requireContext()) settingsAdapterRow = RowRepresentableAdapter( this, this diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt index d197ecdf..7d4f27d6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt @@ -90,7 +90,7 @@ enum class SettingRow : RowRepresentable { get() { return when (this) { VERSION -> RowViewType.TITLE_VALUE.ordinal - else -> RowViewType.TITLE.ordinal + else -> RowViewType.TITLE_ARROW.ordinal } } diff --git a/app/src/main/java/net/pokeranalytics/android/util/Global.kt b/app/src/main/java/net/pokeranalytics/android/util/Global.kt index 978e6109..4d98f7ce 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Global.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Global.kt @@ -1,3 +1,8 @@ package net.pokeranalytics.android.util + +const val SUPPORT_EMAIL = "support@pokeranalytics.net" +const val URL_PRIVACY_POLICY = "https://www.poker-analytics.net/privacypolicy.html" +const val URL_TERMS = "https://www.poker-analytics.net/terms.html" + val NULL_TEXT: String = "--" diff --git a/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt b/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt index f663ba53..76aec989 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt @@ -1,7 +1,14 @@ package net.pokeranalytics.android.util +import android.content.ActivityNotFoundException +import android.content.Intent import android.content.res.Resources +import android.net.Uri import android.widget.Toast +import androidx.browser.customtabs.CustomTabsIntent +import androidx.core.content.ContextCompat +import net.pokeranalytics.android.BuildConfig +import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment @@ -17,13 +24,49 @@ val Float.px: Float get() = (this * Resources.getSystem().displayMetrics.density) - // Toast - fun PokerAnalyticsActivity.toast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } - fun PokerAnalyticsFragment.toast(message: String) { Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() -} \ No newline at end of file +} + +// Open Play Store for rating +fun PokerAnalyticsActivity.openPlayStorePage() { + val uri = Uri.parse("market://details?id=$packageName") + val goToMarket = Intent(Intent.ACTION_VIEW, uri) + goToMarket.addFlags( + Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_NEW_DOCUMENT or + Intent.FLAG_ACTIVITY_MULTIPLE_TASK + ) + try { + startActivity(goToMarket) + } catch (e: ActivityNotFoundException) { + startActivity( + Intent( + Intent.ACTION_VIEW, Uri.parse( + "http://play.google.com/store/apps/details?id=$packageName" + ) + ) + ) + } +} + +// Open email for "Contact us" +fun PokerAnalyticsActivity.openContactMail() { + val info = "${BuildConfig.VERSION_NAME}(${BuildConfig.VERSION_CODE}), ${android.os.Build.VERSION.SDK_INT}" + val intent = Intent(Intent.ACTION_SENDTO) + intent.data = Uri.parse("mailto:$SUPPORT_EMAIL") + intent.putExtra(Intent.EXTRA_EMAIL, SUPPORT_EMAIL) + intent.putExtra(Intent.EXTRA_TEXT, "

$info") + startActivity(Intent.createChooser(intent, getString(R.string.contact))) +} + +// Open custom tab +fun PokerAnalyticsActivity.openUrl(url: String) { + val builder: CustomTabsIntent.Builder = CustomTabsIntent.Builder() + builder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary)) + val customTabsIntent = builder.build() + customTabsIntent.launchUrl(this, Uri.parse(url)) +} From 3584bf5b5de32427f75cd53b95f388580d22fc8b Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 10:55:09 +0100 Subject: [PATCH 04/15] Update contact content --- .../main/java/net/pokeranalytics/android/util/UIExtensions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt b/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt index 76aec989..75c6e355 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/UIExtensions.kt @@ -55,11 +55,11 @@ fun PokerAnalyticsActivity.openPlayStorePage() { // Open email for "Contact us" fun PokerAnalyticsActivity.openContactMail() { - val info = "${BuildConfig.VERSION_NAME}(${BuildConfig.VERSION_CODE}), ${android.os.Build.VERSION.SDK_INT}" + val info = "v${BuildConfig.VERSION_NAME}(${BuildConfig.VERSION_CODE}), Android ${android.os.Build.VERSION.SDK_INT}" val intent = Intent(Intent.ACTION_SENDTO) intent.data = Uri.parse("mailto:$SUPPORT_EMAIL") intent.putExtra(Intent.EXTRA_EMAIL, SUPPORT_EMAIL) - intent.putExtra(Intent.EXTRA_TEXT, "

$info") + intent.putExtra(Intent.EXTRA_TEXT, "\n\n$info") startActivity(Intent.createChooser(intent, getString(R.string.contact))) } From 09888cffaf07ea570ead262c6a8dab7d5762c581 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 11:12:58 +0100 Subject: [PATCH 05/15] End the session if the cashout value is set --- .../pokeranalytics/android/model/realm/Session.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 c06dc04c..44c70562 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 @@ -562,7 +562,17 @@ open class Session : RealmObject(), SessionInterface, Savable, } SessionRow.CASHED_OUT, SessionRow.PRIZE -> { val localResult = if (result != null) result as Result else realm.createObject(Result::class.java) - localResult.cashout = if (value == null) null else (value as String).toDouble() + + if (value == null) { + localResult.cashout = null + } else { + localResult.cashout = (value as String).toDouble() + val timeFrameToUpdate = + if (timeFrame != null) timeFrame as TimeFrame else realm.createObject(TimeFrame::class.java) + timeFrameToUpdate.setDate(null, Date()) + timeFrame = timeFrameToUpdate + } + result = localResult } SessionRow.COMMENT -> comment = value as String? ?: "" From 1ae178a9c5ef93942b35bacca1157560786b6985 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 12:39:03 +0100 Subject: [PATCH 06/15] Add net result --- .../android/model/realm/Session.kt | 8 +- .../android/ui/fragment/SessionFragment.kt | 2 +- .../ui/view/rowrepresentable/SessionRow.kt | 229 +++++++++--------- 3 files changed, 125 insertions(+), 114 deletions(-) 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 44c70562..0314e981 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 @@ -362,7 +362,7 @@ open class Session : RealmObject(), SessionInterface, Savable, } // Rows - rows.addAll(SessionRow.getRows(type, getState())) + rows.addAll(SessionRow.getRows(this)) return rows } @@ -376,7 +376,7 @@ open class Session : RealmObject(), SessionInterface, Savable, SessionRow.BLINDS -> getBlinds() SessionRow.BREAK_TIME -> timeFrame?.breakDuration?.toMinutes() ?: "--" SessionRow.BUY_IN -> buyin.toCurrency() - SessionRow.CASHED_OUT, SessionRow.PRIZE -> result?.cashout?.toCurrency() ?: "--" + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> result?.cashout?.toCurrency() ?: "--" SessionRow.COMMENT -> if (comment.isNotEmpty()) comment else "--" SessionRow.END_DATE -> if (timeFrame != null) timeFrame?.endDate?.shortDateTime() ?: "--" else "--" SessionRow.GAME -> getGameTitle() @@ -461,7 +461,7 @@ open class Session : RealmObject(), SessionInterface, Savable, ) ) } - SessionRow.CASHED_OUT, SessionRow.PRIZE -> { + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> { data.add( RowRepresentableEditDescriptor( result?.cashout?.round(), @@ -560,7 +560,7 @@ open class Session : RealmObject(), SessionInterface, Savable, localResult.buyin = value as Double? result = localResult } - SessionRow.CASHED_OUT, SessionRow.PRIZE -> { + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> { val localResult = if (result != null) result as Result else realm.createObject(Result::class.java) if (value == null) { 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 09b093dc..5e82b00e 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 @@ -104,7 +104,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott currentSession.updateValue(value, row) sessionAdapter.refreshRow(row) when (row) { - SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.BUY_IN, SessionRow.TIPS, + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT, SessionRow.BUY_IN, SessionRow.TIPS, SessionRow.START_DATE, SessionRow.END_DATE -> updateSessionUI() } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt index f4d8c5be..9be81d54 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import net.pokeranalytics.android.R 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.ui.view.RowRepresentable @@ -10,121 +11,131 @@ import net.pokeranalytics.android.ui.view.RowViewType enum class SessionRow : RowRepresentable { - PRIZE, - CASHED_OUT, - 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, - START_DATE, - END_DATE, + GAME, + BLINDS, + LOCATION, + BANKROLL, + TABLE_SIZE, + TOURNAMENT_TYPE, + START_DATE, + END_DATE, - BREAK_TIME, - COMMENT; + BREAK_TIME, + COMMENT; - companion object { - /** - * Return the rows to display for the current session state - */ - fun getRows(type: Int, sessionState: SessionState): ArrayList { - when (type) { - Session.Type.TOURNAMENT.ordinal -> { - return when (sessionState) { - SessionState.PENDING, SessionState.PLANNED -> { - arrayListOf( - GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, - START_DATE, END_DATE - ) - } - SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { - arrayListOf( - PRIZE, BUY_IN, POSITION, PLAYERS, TIPS, - GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, - START_DATE, END_DATE, BREAK_TIME, COMMENT - ) - } - else -> arrayListOf() - } - } - Session.Type.CASH_GAME.ordinal -> { - return when (sessionState) { - SessionState.PENDING, SessionState.PLANNED -> { - arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE) - } - SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { - arrayListOf( - CASHED_OUT, BUY_IN, TIPS, - GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT - ) - } - else -> arrayListOf() - } - } - } - return arrayListOf() - } - } + companion object { + /** + * Return the rows to display for the current session state + */ + fun getRows(session: Session): ArrayList { + 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, + START_DATE, END_DATE + ) + } + SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { + arrayListOf( + PRIZE, BUY_IN, POSITION, PLAYERS, TIPS, + GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, + START_DATE, END_DATE, BREAK_TIME, COMMENT + ) + } + else -> arrayListOf() + } + } + 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 liveBankroll = session.bankroll?.live ?: false + return if (liveBankroll) { + arrayListOf( + CASHED_OUT, BUY_IN, TIPS, + GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT + ) + } else { + arrayListOf( + NET_RESULT, BUY_IN, TIPS, + GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT + ) + } + } + else -> return arrayListOf() + } + } + } + return arrayListOf() + } + } - override val needSeparator: Boolean - get() { - return when (this) { - SessionRow.TIPS -> true - else -> false - } - } + override val needSeparator: Boolean + get() { + return when (this) { + SessionRow.TIPS -> true + else -> false + } + } - override val resId: Int? - get() { - return when (this) { - 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 - 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 + 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) { - PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS, - GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, - TOURNAMENT_TYPE, 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, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal + } + } - override val bottomSheetType: BottomSheetType - get() { - return when (this) { - CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT - BUY_IN, TIPS -> BottomSheetType.SUM - BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT - GAME -> BottomSheetType.LIST_GAME - LOCATION, BANKROLL, TOURNAMENT_TYPE -> BottomSheetType.LIST - TABLE_SIZE -> BottomSheetType.GRID - COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES - else -> BottomSheetType.NONE - } - } + override val bottomSheetType: BottomSheetType + get() { + return when (this) { + NET_RESULT, CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT + BUY_IN, TIPS -> BottomSheetType.SUM + BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT + GAME -> BottomSheetType.LIST_GAME + LOCATION, BANKROLL, TOURNAMENT_TYPE -> BottomSheetType.LIST + TABLE_SIZE -> BottomSheetType.GRID + COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES + else -> BottomSheetType.NONE + } + } } \ No newline at end of file From fda7bbd5c150e942e1d47f582e160952ea542692 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 12:45:08 +0100 Subject: [PATCH 07/15] Manage negative net result keyboard --- .../main/java/net/pokeranalytics/android/model/realm/Session.kt | 1 + 1 file changed, 1 insertion(+) 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 0314e981..435c87da 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 @@ -467,6 +467,7 @@ open class Session : RealmObject(), SessionInterface, Savable, result?.cashout?.round(), inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL + or InputType.TYPE_NUMBER_FLAG_SIGNED ) ) } From 559549e2ee0945804a0eb917e74b81ecaa5493fa Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Tue, 5 Mar 2019 14:10:32 +0100 Subject: [PATCH 08/15] remove unuseful out in adapterRows signature --- .../java/net/pokeranalytics/android/model/realm/Bankroll.kt | 2 +- .../main/java/net/pokeranalytics/android/model/realm/Game.kt | 2 +- .../java/net/pokeranalytics/android/model/realm/Session.kt | 2 +- .../pokeranalytics/android/model/realm/TournamentFeature.kt | 2 +- .../pokeranalytics/android/model/realm/TransactionType.kt | 2 +- .../android/ui/adapter/RowRepresentableDataSource.kt | 5 ++--- .../net/pokeranalytics/android/ui/fragment/StatsFragment.kt | 2 +- .../bottomsheet/BottomSheetTableSizeGridFragment.kt | 2 +- 8 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index cb9d1e23..5504d3ad 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -49,7 +49,7 @@ open class Bankroll(name: String = "") : RealmObject(), Savable, // Row Representable Datasource - override fun adapterRows(): List? { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(BankrollRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index 7ea10b75..3a3fea3c 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -31,7 +31,7 @@ open class Game : RealmObject(), Savable, StaticRowRepresentableDataSource, return this.id } - override fun adapterRows(): List? { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(GameRow.values()) 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 0314e981..fcba2991 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 @@ -311,7 +311,7 @@ open class Session : RealmObject(), SessionInterface, Savable, return "Session ${this.creationDate}" } - override fun adapterRows(): List? { + override fun adapterRows(): List? { val rows = ArrayList() // Headers diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index 929fe42b..dcda7dd1 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt @@ -28,7 +28,7 @@ open class TournamentFeature : RealmObject(), Savable, StaticRowRepresentableDat return this.id } - override fun adapterRows(): List? { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(TournamentFeatureRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt index 70d8b686..4641418f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt @@ -38,7 +38,7 @@ open class TransactionType : RealmObject(), Savable, StaticRowRepresentableDataS return this.id } - override fun adapterRows(): List? { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(TransactionTypeRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt index 942b323c..19e6c255 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt @@ -4,7 +4,6 @@ import android.content.Context import net.pokeranalytics.android.calculus.TextFormat import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor -import org.w3c.dom.Text /** * Base Interface to provide the RowRepresentable to the adapter @@ -14,7 +13,7 @@ interface RowRepresentableDataSource: EditableDataSource, DisplayableDataSource /** * Returns a prebuild list of rows */ - fun adapterRows(): List? + fun adapterRows(): List? /** * Returns a [RowRepresentable] at position [Int] @@ -74,7 +73,7 @@ interface StaticRowRepresentableDataSource: RowRepresentableDataSource { * To do that, this interface overrides and provides a default implementation to specific methods of [RowRepresentableDataSource] */ interface LiveRowRepresentableDataSource: RowRepresentableDataSource { - override fun adapterRows(): List? { + override fun adapterRows(): List? { return null } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 4fa1cd8f..918a1bce 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -52,7 +52,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc // Row Representable DS - override fun adapterRows(): List? { + override fun adapterRows(): List? { return this.rowRepresentables } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt index 0635780c..af16dc04 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt @@ -72,7 +72,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), } } - override fun adapterRows(): List? { + override fun adapterRows(): List? { return TableSize.all } From f59d97a5123a28231c4e28acd8b92f0008010c97 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 14:42:24 +0100 Subject: [PATCH 09/15] Fix error message for data management --- .../android/ui/fragment/EditableDataFragment.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index bed75b34..7fd60691 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -14,15 +14,16 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.Savable +import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity 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.helpers.PlacePickerManager import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment +import net.pokeranalytics.android.ui.helpers.PlacePickerManager import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.LocationRow @@ -137,8 +138,18 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, finishActivityWithResult(uniqueIdentifier) } } 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 TournamentType -> R.string.tt_empty_field_error + is TransactionType -> R.string.operation_type_empty_field_error + else -> R.string.empty_name_for_br_error + } + val builder = AlertDialog.Builder(requireContext()) - .setMessage(R.string.empty_name_for_br_error) + .setMessage(message) .setNegativeButton(R.string.ok, null) builder.show() } From b36d0a582eebda15a2ad0414fbfe15598778c5c1 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 14:42:50 +0100 Subject: [PATCH 10/15] Update tournament type to fix crash when editing --- .../android/model/realm/TournamentType.kt | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt index c10cba32..c29e87b7 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt @@ -3,13 +3,15 @@ package net.pokeranalytics.android.model.realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.model.interfaces.Savable -import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource +import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import java.util.* +import kotlin.collections.ArrayList -open class TournamentType : RealmObject(), Savable, RowRepresentable { +open class TournamentType : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -31,4 +33,36 @@ open class TournamentType : RealmObject(), Savable, RowRepresentable { } } + override fun adapterRows(): List? { + val rows = ArrayList() + rows.add(SimpleRow.NAME) + //rows.addAll(TournamentType.values()) + return rows + } + + override fun stringForRow(row: RowRepresentable): String { + return when (row) { + SimpleRow.NAME -> this.name + else -> return super.stringForRow(row) + } + } + + override fun editDescriptors(row: RowRepresentable): ArrayList { + val data = java.util.ArrayList() + when (row) { + SimpleRow.NAME -> data.add( + RowRepresentableEditDescriptor( + this.name, + SimpleRow.NAME.resId + ) + ) + } + return data + } + + override fun isValidForSave(): Boolean { + return this.name.isNotEmpty() + } + + } From 872a23923622d8a3131df84f2fef2e54b336a1cf Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 14:42:57 +0100 Subject: [PATCH 11/15] Format Game --- .../android/model/realm/Game.kt | 107 +++++++++--------- 1 file changed, 53 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index 3a3fea3c..6e82814d 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -11,69 +11,68 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import java.util.* import kotlin.collections.ArrayList -open class Game : RealmObject(), Savable, StaticRowRepresentableDataSource, - RowRepresentable { +open class Game : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable { - @PrimaryKey - var id = UUID.randomUUID().toString() + @PrimaryKey + var id = UUID.randomUUID().toString() - // The name of the game - var name: String = "" + // The name of the game + var name: String = "" - // A shorter name for the game - var shortName: String? = null + // A shorter name for the game + var shortName: String? = null - override fun getDisplayName(): String { - return this.name - } + override fun getDisplayName(): String { + return this.name + } - override fun uniqueIdentifier(): String { - return this.id - } + override fun uniqueIdentifier(): String { + return this.id + } - override fun adapterRows(): List? { - val rows = ArrayList() - rows.add(SimpleRow.NAME) - rows.addAll(GameRow.values()) - return rows - } + override fun adapterRows(): List? { + val rows = ArrayList() + rows.add(SimpleRow.NAME) + rows.addAll(GameRow.values()) + return rows + } - override fun stringForRow(row: RowRepresentable): String { - return when (row) { - SimpleRow.NAME -> this.name - GameRow.SHORT_NAME -> this.shortName?:"" - else -> return super.stringForRow(row) - } - } + override fun stringForRow(row: RowRepresentable): String { + return when (row) { + SimpleRow.NAME -> this.name + GameRow.SHORT_NAME -> this.shortName ?: "" + else -> return super.stringForRow(row) + } + } - override fun editDescriptors(row: RowRepresentable): ArrayList { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - this.name, - SimpleRow.NAME.resId - ) - ) - GameRow.SHORT_NAME -> data.add( - RowRepresentableEditDescriptor( - this.shortName, - GameRow.SHORT_NAME.resId - ) - ) - } - return data - } + override fun editDescriptors(row: RowRepresentable): ArrayList { + val data = java.util.ArrayList() + when (row) { + SimpleRow.NAME -> data.add( + RowRepresentableEditDescriptor( + this.name, + SimpleRow.NAME.resId + ) + ) + GameRow.SHORT_NAME -> data.add( + RowRepresentableEditDescriptor( + this.shortName, + GameRow.SHORT_NAME.resId + ) + ) + } + return data + } - override fun updateValue(value: Any?, row: RowRepresentable) { - when (row) { - SimpleRow.NAME -> this.name = value as String? ?: "" - GameRow.SHORT_NAME -> this.shortName = value as String - } - } + override fun updateValue(value: Any?, row: RowRepresentable) { + when (row) { + SimpleRow.NAME -> this.name = value as String? ?: "" + GameRow.SHORT_NAME -> this.shortName = value as String + } + } - override fun isValidForSave(): Boolean { - return this.name.isNotEmpty() - } + override fun isValidForSave(): Boolean { + return this.name.isNotEmpty() + } } From 121d111f96fd61a2a796c10d797ec54252d14aa4 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 15:27:52 +0100 Subject: [PATCH 12/15] Add follow us row (with a small hack to get the clicked position) --- .../android/ui/fragment/SettingsFragment.kt | 8 ++ .../android/ui/view/RowViewType.kt | 28 +++++++ .../ui/view/rowrepresentable/SettingRow.kt | 1 + .../net/pokeranalytics/android/util/Global.kt | 11 ++- app/src/main/res/layout/row_follow_us.xml | 84 +++++++++++++++++++ 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/layout/row_follow_us.xml diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 5341c686..af907192 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -67,6 +67,14 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta SettingRow.RATE_APP -> parentActivity.openPlayStorePage() SettingRow.CONTACT_US -> parentActivity.openContactMail() SettingRow.BUG_REPORT -> Toast.makeText(requireContext(), "Bug report", Toast.LENGTH_SHORT).show() + SettingRow.FOLLOW_US -> { + when(position) { + 0 -> parentActivity.openUrl(BLOG) + 1 -> parentActivity.openUrl(INSTAGRAM) + 2 -> parentActivity.openUrl(TWITTER) + 3 -> parentActivity.openUrl(FACEBOOK) + } + } SettingRow.CURRENCY -> Toast.makeText(requireContext(), "Currency", Toast.LENGTH_SHORT).show() SettingRow.PRIVACY_POLICY -> parentActivity.openUrl(URL_PRIVACY_POLICY) SettingRow.TERMS_OF_USE -> parentActivity.openUrl(URL_TERMS) 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 78bc4193..63273611 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 @@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.view import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatTextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView @@ -52,6 +53,7 @@ enum class RowViewType { TITLE_GRID, ROW_SESSION, BUTTON, + FOLLOW_US, STAT; /** @@ -161,6 +163,15 @@ enum class RowViewType { ) ) } + FOLLOW_US -> { + FollowUsViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.row_follow_us, + parent, + false + ) + ) + } STAT -> StatsTitleValueViewHolder( LayoutInflater.from(parent.context).inflate( R.layout.row_stats_title_value, @@ -236,6 +247,23 @@ enum class RowViewType { } } + inner class FollowUsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { + override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { + itemView.findViewById(R.id.icon1).setOnClickListener { + adapter.delegate?.onRowSelected(0, row) + } + itemView.findViewById(R.id.icon2).setOnClickListener { + adapter.delegate?.onRowSelected(1, row) + } + itemView.findViewById(R.id.icon3).setOnClickListener { + adapter.delegate?.onRowSelected(2, row) + } + itemView.findViewById(R.id.icon4).setOnClickListener { + adapter.delegate?.onRowSelected(3, row) + } + } + } + inner class StatsTitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt index 7d4f27d6..f2bcbf24 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt @@ -90,6 +90,7 @@ enum class SettingRow : RowRepresentable { get() { return when (this) { VERSION -> RowViewType.TITLE_VALUE.ordinal + FOLLOW_US -> RowViewType.FOLLOW_US.ordinal else -> RowViewType.TITLE_ARROW.ordinal } } diff --git a/app/src/main/java/net/pokeranalytics/android/util/Global.kt b/app/src/main/java/net/pokeranalytics/android/util/Global.kt index 4d98f7ce..e121a598 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Global.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Global.kt @@ -1,8 +1,17 @@ package net.pokeranalytics.android.util +val NULL_TEXT: String = "--" +// Support const val SUPPORT_EMAIL = "support@pokeranalytics.net" + +// Terms const val URL_PRIVACY_POLICY = "https://www.poker-analytics.net/privacypolicy.html" const val URL_TERMS = "https://www.poker-analytics.net/terms.html" -val NULL_TEXT: String = "--" +// Social Network +const val BLOG = "https://medium.com/poker-analytics" +const val INSTAGRAM = "https://www.instagram.com/pokeranalytics" +const val TWITTER = "https://twitter.com/paapptweet" +const val FACEBOOK = "https://www.facebook.com/171053452998758" + diff --git a/app/src/main/res/layout/row_follow_us.xml b/app/src/main/res/layout/row_follow_us.xml new file mode 100644 index 00000000..b8ad4830 --- /dev/null +++ b/app/src/main/res/layout/row_follow_us.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + \ No newline at end of file From f058174914dffc802fe19f11e65d382a42476488 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 15:35:03 +0100 Subject: [PATCH 13/15] Remove Transaction type --- .../android/ui/view/rowrepresentable/SettingRow.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt index f2bcbf24..bfe74753 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt @@ -25,7 +25,6 @@ enum class SettingRow : RowRepresentable { GAME, LOCATION, TOURNAMENT_TYPE, - TRANSACTION_TYPE, // Terms PRIVACY_POLICY, @@ -55,7 +54,7 @@ enum class SettingRow : RowRepresentable { resId = R.string.data_management ) ) - rows.addAll(arrayListOf(BANKROLL, GAME, LOCATION, TOURNAMENT_TYPE, TRANSACTION_TYPE)) + rows.addAll(arrayListOf(BANKROLL, GAME, LOCATION, TOURNAMENT_TYPE)) rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_SESSION, resId = R.string.terms)) rows.addAll(arrayListOf(PRIVACY_POLICY, TERMS_OF_USE, GDPR)) @@ -102,7 +101,6 @@ enum class SettingRow : RowRepresentable { GAME -> LiveData.GAME LOCATION -> LiveData.LOCATION TOURNAMENT_TYPE -> LiveData.TOURNAMENT_TYPE - TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE else -> null } } From eb3dec4e6ba35d85fd7e11dc22bf96c720b3a53c Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 15:35:13 +0100 Subject: [PATCH 14/15] Remove transaction type --- .../android/ui/fragment/EditableDataFragment.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index 7fd60691..8642d0f1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -14,7 +14,10 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.Savable -import net.pokeranalytics.android.model.realm.* +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.TournamentType import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter @@ -144,14 +147,15 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, is Location -> R.string.location_empty_field_error is Game -> R.string.location_empty_field_error is TournamentType -> R.string.tt_empty_field_error - is TransactionType -> R.string.operation_type_empty_field_error - else -> R.string.empty_name_for_br_error + //is TransactionType -> R.string.operation_type_empty_field_error + else -> throw IllegalStateException("Need to manage ${item::class.java} error") } val builder = AlertDialog.Builder(requireContext()) .setMessage(message) .setNegativeButton(R.string.ok, null) builder.show() + } } From ce1d3eff8372db3f3397a40ecde22e4df71e02b4 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 5 Mar 2019 16:26:05 +0100 Subject: [PATCH 15/15] Clean style --- .../android/ui/fragment/HistoryFragment.kt | 8 ++++---- .../android/ui/fragment/StatsFragment.kt | 2 +- .../android/ui/view/RowViewType.kt | 19 ++++++++---------- .../HeaderRowRepresentable.kt | 4 ++-- .../ui/view/rowrepresentable/SettingRow.kt | 10 ++++----- .../res/drawable-xxhdpi/add_tournament.png | Bin 0 -> 1391 bytes .../main/res/drawable-xxhdpi/add_tournoi.png | Bin 2011 -> 0 bytes app/src/main/res/layout/fragment_history.xml | 6 +++--- ...ession_header.xml => row_header_title.xml} | 0 app/src/main/res/layout/row_session_view.xml | 2 +- .../main/res/layout/row_stats_title_value.xml | 3 +-- app/src/main/res/layout/row_title.xml | 2 +- app/src/main/res/layout/row_title_arrow.xml | 2 +- app/src/main/res/layout/row_title_value.xml | 2 +- .../res/layout/row_title_value_action.xml | 2 +- app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/styles.xml | 7 ++++--- 17 files changed, 34 insertions(+), 37 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/add_tournament.png delete mode 100644 app/src/main/res/drawable-xxhdpi/add_tournoi.png rename app/src/main/res/layout/{row_history_session_header.xml => row_header_title.xml} (100%) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index aa692789..f13e6b38 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -127,7 +127,7 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource if (!calendar.isSameDay(currentCalendar) || index == 0) { calendar.time = currentCalendar.time val header = HeaderRowRepresentable( - customViewType = RowViewType.HEADER_SESSION, + customViewType = RowViewType.HEADER_TITLE, title = session.creationDate.longDate() ) rows.add(header) @@ -136,7 +136,7 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource if (!calendar.isSameMonth(currentCalendar) || index == 0) { calendar.time = currentCalendar.time val header = HeaderRowRepresentable( - customViewType = RowViewType.HEADER_SESSION, + customViewType = RowViewType.HEADER_TITLE, title = session.creationDate.getMonthAndYear() ) rows.add(header) @@ -165,8 +165,8 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource } override fun viewTypeForPosition(position: Int): Int { - return if (rows[position].viewType == RowViewType.HEADER_SESSION.ordinal) { - RowViewType.HEADER_SESSION.ordinal + return if (rows[position].viewType == RowViewType.HEADER_TITLE.ordinal) { + RowViewType.HEADER_TITLE.ordinal } else { RowViewType.ROW_SESSION.ordinal } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 918a1bce..6e9d00bf 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -141,7 +141,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc val rows: ArrayList = ArrayList() results.forEach { results -> - rows.add(HeaderRowRepresentable(RowViewType.TITLE, title = results.group.name)) + rows.add(HeaderRowRepresentable(title = results.group.name)) results.group.stats?.forEach { stat -> rows.add(StatRepresentable(stat, results.computedStat(stat))) } 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 63273611..c95c2036 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 @@ -9,10 +9,10 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.row_bottom_sheet_grid_title.view.* import kotlinx.android.synthetic.main.row_bottom_sheet_title.view.* +import kotlinx.android.synthetic.main.row_header_title.view.* import kotlinx.android.synthetic.main.row_header_title_amount.view.* import kotlinx.android.synthetic.main.row_header_title_value.view.* import kotlinx.android.synthetic.main.row_history_session.view.* -import kotlinx.android.synthetic.main.row_history_session_header.view.* import kotlinx.android.synthetic.main.row_stats_title_value.view.* import kotlinx.android.synthetic.main.row_title.view.* import kotlinx.android.synthetic.main.row_title_switch.view.* @@ -29,19 +29,16 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentabl * An interface used to factor the configuration of RecyclerView.ViewHolder */ interface BindableHolder { - fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { - } } enum class RowViewType { - HEADER, HEADER_TITLE_VALUE, HEADER_TITLE_AMOUNT, HEADER_TITLE_AMOUNT_BIG, - HEADER_SESSION, + HEADER_TITLE, EDIT_TEXT, TITLE, TITLE_ARROW, @@ -138,10 +135,10 @@ enum class RowViewType { false ) ) - HEADER_SESSION -> { + HEADER_TITLE -> { HeaderSessionViewHolder( LayoutInflater.from(parent.context).inflate( - R.layout.row_history_session_header, + R.layout.row_header_title, parent, false ) @@ -187,12 +184,12 @@ enum class RowViewType { BindableHolder { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { itemView.rowHeaderTitleValue_title.text = row.localizedTitle(itemView.context) - adapter.dataSource?.let { + adapter.dataSource.let { itemView.rowHeaderTitleValue_value.text = it.stringForRow(row, itemView.context) } -// val listener = View.OnClickListener { -// adapter.delegate?.onRowSelected(position, row) -// } + //val listener = View.OnClickListener { + // adapter.delegate?.onRowSelected(position, row) + //} //itemView.rowHeaderTitleValue_container.setOnClickListener(listener) itemView.rowHeaderTitleValue_separator.visibility = if (row.needSeparator) View.VISIBLE else View.GONE } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/HeaderRowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/HeaderRowRepresentable.kt index bec9dfe3..62f34061 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/HeaderRowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/HeaderRowRepresentable.kt @@ -8,7 +8,7 @@ import net.pokeranalytics.android.ui.view.RowViewType * A class to display headers as row representable */ class HeaderRowRepresentable( - var customViewType: RowViewType? = RowViewType.HEADER, + var customViewType: RowViewType? = RowViewType.HEADER_TITLE, override var resId: Int? = null, var title: String? = null, var value: String? = null @@ -26,6 +26,6 @@ class HeaderRowRepresentable( } - override val viewType: Int = customViewType?.ordinal ?: RowViewType.HEADER.ordinal + override val viewType: Int = customViewType?.ordinal ?: RowViewType.HEADER_TITLE.ordinal } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt index bfe74753..df23556a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SettingRow.kt @@ -39,24 +39,24 @@ enum class SettingRow : RowRepresentable { fun getRows(): ArrayList { val rows = ArrayList() - rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_SESSION, resId = R.string.information)) + rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.information)) rows.addAll(arrayListOf(VERSION, RATE_APP, CONTACT_US, BUG_REPORT)) - rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_SESSION, resId = R.string.follow_us)) + rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.follow_us)) rows.addAll(arrayListOf(FOLLOW_US)) - rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_SESSION, resId = R.string.preferences)) + rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.preferences)) rows.addAll(arrayListOf(CURRENCY)) rows.add( HeaderRowRepresentable( - customViewType = RowViewType.HEADER_SESSION, + customViewType = RowViewType.HEADER_TITLE, resId = R.string.data_management ) ) rows.addAll(arrayListOf(BANKROLL, GAME, LOCATION, TOURNAMENT_TYPE)) - rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_SESSION, resId = R.string.terms)) + rows.add(HeaderRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.terms)) rows.addAll(arrayListOf(PRIVACY_POLICY, TERMS_OF_USE, GDPR)) return rows diff --git a/app/src/main/res/drawable-xxhdpi/add_tournament.png b/app/src/main/res/drawable-xxhdpi/add_tournament.png new file mode 100644 index 0000000000000000000000000000000000000000..d2532d17568f0098e2a4f1f7605b296d474791ae GIT binary patch literal 1391 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm8Ax*9Z@d7c<^=eJxB_V@c`0dmX(&>V1_CKL zkch0TEL2cVT3SIGs1l(JC?YQn)F`PS3DPbHVoS?POUg-#D2srkz$VDa$-%WiL_l06 zs9hitusJd^G7!@sMnO%Jm%cpVF38cwB|(0{3F!Z*JVodu1TN z_P}0X(gxK;&gcjy?xn4HCHMZ{?X$`B&S4Fe+hO&oyz|LL`!h#e4iw59N1%Vn_pZGc za$VdX+9sX4x9)od zm$o@C3z(t(Z%L34-{oWZTV<|&y8o}ML_#g(SC8UG^`#r{6u7-*JA>d0x)wPsQD-lR0d?6D|M$TRQ*E0a^Ql_oh8xK6g&3r_Ri5+s`W7H;D0E zIcRD!Tg|ib!kWrej5!}I<=ZAKF?vz+F3Rk%A&>Ks*R8uzlP@^G%@f^Vs#b0vb=xP1f~S*gc#<=(7g8>R-nJ@@-iME9=VR8ONV8y@=Wrp;_X%y~b3;;)<=KapW4g68)$AlUU?)w=F!G zx^drvO!L#zRGaedmYKS4^fR43l||s;_0|kVUyZJ*3$p}Qo{yTq>9%KWRj{?^8n-o9 zeSem5C~Q%CDj1sVsk8r?XgS-)@}Rz33@?r^3^io4-li3ll$P!ubZ)|F;kflPe>xp% z`{CR_HP$uwL4O>B)v<8*DEDe z-?_L%;h8=|&CR1;3_3MQM_J0J{>?s~S1#0cP@_*?=3FUjp!v2`traXypB8<*^MCJ5 zi^Y3*wh3M{`}i~Vp#9$qThyPvZ{(ew`t^UGmh7W5e@wYE+wvB#vGIIQ`pagb^SG<;H{HF(&N?|Qe2t>Sp$#@ETkU#gZQ%qtiSEKic zX3H&|zQM`WMy*kG?u7QWiD##<-~F*+`ElmF_6;6Obwv9Tu10J=BQmX&>D}zZyUgG1 z{G51Sy?hCmUPNKH++ohT>C#PnGKQD`6mzEctg)9qb@r$8{lkjix9c1!aF_G95v%H- zDSh2JU8wN%(c`n`pW+umdKI;Vst0B62XjsO4v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/add_tournoi.png b/app/src/main/res/drawable-xxhdpi/add_tournoi.png deleted file mode 100644 index f78065a3c6c9721757311ca606561eeacc35fd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2011 zcmZ{ldpy&N8^^aX7GX9UtwW>9ZHbDULfevA7Zl~2OF7?AS? zx%IxTOEubQ-{ezMJ84%@@@OFJanuo;4Ia=q+=V!m!y9vMM4&T~L2~;ZlJfH2c=Hxv zZ9iBVe4&AcB(|K?RRu?FtOI;JP2Er?HqVT9Ah+T>U+eDRY5Dd~+CGROLE__NGb0o8 zUl9MZg-xpHojWPGgCP>S&wLR#|6)xY&cr&BX!7tIv zx6!UQMmq|18Wi#3{glqF>}&lWuXN1)$r9w{TCph^L}ikbcdC=#*PFAgesS^5m4RF3 z2<(s|7!F`NEMS?{lzuF|IE7|n3P$P{<$$=EoMy*9JH6J`{7t#JfDZ-ZZb~T+VLk-L zF0+(7YOeU+LeEz6$a>%#Q%VYrF=D>P*rD>#X2Hb$j{#VABN+fopb*0tBVRN|;7CQ4sQRcaKe^jpno&IN>&gkdZ>^fF+&24Rj-pg&8Ksv;H;h+}10${Cxr9XJi)i z9%s60f=^QYC?z9$TQ#=!(@4W{ue&&`B*scA9 zFK9~d&VE>eQ=iLS_=GEJc*ifLi^l?%#m%VkM0I1X`5r%X!Uq50T?q%p5vwbloA5+- z{iC6cCQ5g|gfidN^s0F}rs7WUHKA$`GmLTcYgU1skg(jM+k*Xa;j|ZQ@0fNxSy#IR z-`ye1Z6FH@%ZCL*!V5T^f2FKH>`VS(7uHHT;gx++AJ6H$K710DO%SL+aRaWZ}?i;d2MI{crULqV86iCD|luwDN z27hnqj9NJ#GQ+t0){swl?ps+GBl{%`g#u(tW$fDp+{e1v!>w&AIBBw{t~2wS$`8L9 zIwrrkc$Zyw_&1M|pN%O4t*$zaW}&iC() zylR};6D*jx7Wh3UDsz2aQX&Bv$Ei|yish5%9d(H6!m)yO&n;mkqK{{6>Kg`cs%T3a zj%s~fQu|;rY4hYMTrf-P8y(|`d78nsMyN4@79wQ~zdwuF*ghuYz_+cE;va#XFJw=& z-Ce|hA8oZ!?8$KGMC`LE>&xmy$LUwm_wt;Iy`|XqKRS8!%O{Hi+?I z+wC842VXP-9cAotBi0-uHv+<3dX)Bj&KT;#N*zSju^%VDwM|or#@e+M_f9;P1EaiZ zEbB8^GB6^#6BNw9N_!bJ?!|D4fFh>eossXsJ_OG(>(LhCNo#&g{m>1-QrVqzbv8iV zoJth6g*r#xYb5sc{hAyJ1>RcEX(+x*s_i%e?Q#s-{()H>xN_-EHcA91CKr=cE1qP~ zh@v;=rQ5F8kaY&mz`a91WXRz^jn2iuQ4mmX>-crA?7h!%jmI8CodF;@2!$Rt4~4K2 zH4Ofkv9QSA0;&=>T8LnVHABir@2`+k~NJptqcmdw=R{xz}wrgeC8m9J6&iGF=Ihj=AZs`pUlQxUXmLtag z0H2(>e%omJ)IqjH;gKv2M(F!z^6y2NrR^+lQeI{)PzRz&rx>0U_ldJ%GRw)()-3(?5YvzCa>$sMGBldSE&UiFM{?ms=4rJDc% diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml index c5b1fb98..e4ab0748 100644 --- a/app/src/main/res/layout/fragment_history.xml +++ b/app/src/main/res/layout/fragment_history.xml @@ -82,7 +82,7 @@ android:layout_marginEnd="8dp" android:text="@string/new_cash_game" app:icon="@drawable/add_cash_game" - app:iconSize="32dp" + app:iconSize="28dp" app:layout_constraintEnd_toStartOf="@+id/newTournament" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_chainStyle="spread" @@ -99,8 +99,8 @@ android:layout_marginTop="8dp" android:layout_marginEnd="16dp" android:text="@string/new_tournament" - app:icon="@drawable/add_tournoi" - app:iconSize="32dp" + app:icon="@drawable/add_tournament" + app:iconSize="28dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/newCashGame" diff --git a/app/src/main/res/layout/row_history_session_header.xml b/app/src/main/res/layout/row_header_title.xml similarity index 100% rename from app/src/main/res/layout/row_history_session_header.xml rename to app/src/main/res/layout/row_header_title.xml diff --git a/app/src/main/res/layout/row_session_view.xml b/app/src/main/res/layout/row_session_view.xml index fcc7ed1e..67b08d7b 100644 --- a/app/src/main/res/layout/row_session_view.xml +++ b/app/src/main/res/layout/row_session_view.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="56dp" android:background="?selectableItemBackground"> - #FFFFFF #30FFFFFF - #6AFFFFFF + #8AFFFFFF #141414 #1B1F1B diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6433b80d..3c1d7ae5 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -111,7 +111,7 @@ @@ -200,8 +200,9 @@