Add new menu for Feed tab

dev
Aurelien Hubert 7 years ago
parent 7a9f5a8364
commit dc80f62b21
  1. 237
      app/src/main/AndroidManifest.xml
  2. 1
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  3. 120
      app/src/main/java/net/pokeranalytics/android/ui/activity/NewDataMenuActivity.kt
  4. 126
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt
  5. 132
      app/src/main/res/layout/activity_new_data.xml
  6. 89
      app/src/main/res/layout/fragment_history.xml
  7. 13
      app/src/main/res/values/styles.xml

@ -1,119 +1,126 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.pokeranalytics.android"> package="net.pokeranalytics.android">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application <application
android:name=".PokerAnalyticsApplication" android:name=".PokerAnalyticsApplication"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/PokerAnalyticsTheme"> android:theme="@style/PokerAnalyticsTheme">
<meta-data <meta-data
android:name="firebase_crashlytics_collection_enabled" android:name="firebase_crashlytics_collection_enabled"
android:value="false" /> android:value="false" />
<activity <activity
android:name="net.pokeranalytics.android.ui.activity.HomeActivity" android:name="net.pokeranalytics.android.ui.activity.HomeActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:screenOrientation="portrait"> android:screenOrientation="portrait">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> <category android:name="android.intent.category.LAUNCHER" />
</activity> </intent-filter>
</activity>
<activity
android:name="net.pokeranalytics.android.ui.activity.SessionActivity" <activity
android:launchMode="singleTop" android:name="net.pokeranalytics.android.ui.activity.SessionActivity"
android:screenOrientation="portrait" android:launchMode="singleTop"
android:windowSoftInputMode="adjustNothing" /> android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name="net.pokeranalytics.android.ui.activity.BankrollActivity" <activity
android:launchMode="singleTop" android:name="net.pokeranalytics.android.ui.activity.NewDataMenuActivity"
android:screenOrientation="portrait" /> android:launchMode="singleTop"
android:screenOrientation="portrait"
<activity android:theme="@style/PokerAnalyticsTheme.MenuDialog" />
android:name="net.pokeranalytics.android.ui.activity.BankrollDetailsActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.BankrollActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.SettingsActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.BankrollDetailsActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.StatisticDetailsActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.SettingsActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.ReportDetailsActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.StatisticDetailsActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.CalendarDetailsActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.ReportDetailsActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.ComparisonChartActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.CalendarDetailsActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.DataListActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.ComparisonChartActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.EditableDataActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.DataListActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.CurrenciesActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.EditableDataActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.FiltersActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.CurrenciesActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.FilterDetailsActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.FiltersActivity"
android:launchMode="singleTop"
<activity android:screenOrientation="portrait" />
android:name="net.pokeranalytics.android.ui.activity.GDPRActivity"
android:launchMode="singleTop" <activity
android:screenOrientation="portrait" /> android:name="net.pokeranalytics.android.ui.activity.FilterDetailsActivity"
android:launchMode="singleTop"
<meta-data android:screenOrientation="portrait" />
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" /> <activity
android:name="net.pokeranalytics.android.ui.activity.GDPRActivity"
<provider android:launchMode="singleTop"
android:name="androidx.core.content.FileProvider" android:screenOrientation="portrait" />
android:authorities="${applicationId}.fileprovider"
android:exported="false" <meta-data
android:grantUriPermissions="true"> android:name="preloaded_fonts"
<meta-data android:resource="@array/preloaded_fonts" />
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" /> <provider
</provider> android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
</application> android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
</application>
</manifest> </manifest>

@ -14,7 +14,6 @@ import kotlinx.android.synthetic.main.activity_home.*
import net.pokeranalytics.android.BuildConfig import net.pokeranalytics.android.BuildConfig
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Currency import net.pokeranalytics.android.model.realm.Currency
import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.HomePagerAdapter import net.pokeranalytics.android.ui.adapter.HomePagerAdapter
import timber.log.Timber import timber.log.Timber

@ -0,0 +1,120 @@
package net.pokeranalytics.android.ui.activity
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewAnimationUtils
import kotlinx.android.synthetic.main.activity_new_data.*
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.extensions.px
class NewDataMenuActivity : PokerAnalyticsActivity() {
enum class IntentKey(val keyName: String) {
CHOICE("CHOICE"),
}
companion object {
fun newInstance(context: Context) {
val intent = Intent(context, NewDataMenuActivity::class.java)
context.startActivity(intent)
}
}
private val fabSize = 48.px
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(net.pokeranalytics.android.R.layout.activity_new_data)
initUI()
}
override fun onBackPressed() {
hideMenu()
}
override fun onPause() {
super.onPause()
overridePendingTransition(0, 0)
}
/**
* Init UI
*/
private fun initUI() {
overridePendingTransition(0, 0)
container.viewTreeObserver.addOnGlobalLayoutListener {
showMenu()
}
newCashGame.setOnClickListener {
finishWithResult(0)
}
newTournament.setOnClickListener {
finishWithResult(1)
}
newTransaction.setOnClickListener {
finishWithResult(2)
}
container.setOnClickListener {
hideMenu()
}
}
/**
* Set the result and hide menu
*/
private fun finishWithResult(choice: Int) {
val intent = Intent()
intent.putExtra(IntentKey.CHOICE.keyName, choice)
setResult(RESULT_OK, intent)
hideMenu(true)
}
/**
* Show menu
*/
private fun showMenu() {
val cx = menuContainer.measuredWidth - fabSize / 2
val cy = menuContainer.measuredHeight - fabSize / 2
val finalRadius = Math.max(menuContainer.width, menuContainer.height)
val anim = ViewAnimationUtils.createCircularReveal(menuContainer, cx, cy, 0f, finalRadius.toFloat())
anim.duration = 300
menuContainer.visibility = View.VISIBLE
anim.start()
}
/**
* Hide menu
*/
private fun hideMenu(hideQuickly: Boolean = false) {
val cx = menuContainer.measuredWidth - fabSize / 2
val cy = menuContainer.measuredHeight - fabSize / 2
val initialRadius = menuContainer.width
val anim = ViewAnimationUtils.createCircularReveal(menuContainer, cx, cy, initialRadius.toFloat(), 0f)
anim.duration = if (hideQuickly) 150 else 300
anim.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
super.onAnimationEnd(animation)
menuContainer.visibility = View.INVISIBLE
finish()
}
})
anim.start()
}
}

@ -1,19 +1,22 @@
package net.pokeranalytics.android.ui.fragment package net.pokeranalytics.android.ui.fragment
import android.app.Activity.RESULT_OK
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.core.app.ActivityOptionsCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.interpolator.view.animation.FastOutSlowInInterpolator import androidx.interpolator.view.animation.FastOutSlowInInterpolator
import io.realm.RealmResults import io.realm.RealmResults
import io.realm.Sort import io.realm.Sort
import io.realm.kotlin.where import io.realm.kotlin.where
import kotlinx.android.synthetic.main.fragment_history.* import kotlinx.android.synthetic.main.fragment_history.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Editable import net.pokeranalytics.android.model.interfaces.Editable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.NewDataMenuActivity
import net.pokeranalytics.android.ui.activity.SessionActivity import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.HistorySessionRowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.HistorySessionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
@ -25,9 +28,16 @@ import net.pokeranalytics.android.util.Preferences
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate {
companion object { companion object {
const val REQUEST_CODE_MENU = 100
fun newInstance(): HistoryFragment { fun newInstance(): HistoryFragment {
val fragment = HistoryFragment() val fragment = HistoryFragment()
val bundle = Bundle() val bundle = Bundle()
@ -37,13 +47,14 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
} }
private lateinit var historyAdapter: HistorySessionRowRepresentableAdapter private lateinit var historyAdapter: HistorySessionRowRepresentableAdapter
private lateinit var realmSessions: RealmResults<Session> private lateinit var realmSessions: RealmResults<Session>
private lateinit var betaLimitDate: Date
private val rows: ArrayList<RowRepresentable> = ArrayList() private val rows: ArrayList<RowRepresentable> = ArrayList()
private var newSessionCreated: Boolean = false private var newSessionCreated: Boolean = false
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_history, container, false) return inflater.inflate(net.pokeranalytics.android.R.layout.fragment_history, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -52,42 +63,48 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
initData() initData()
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_MENU && resultCode == RESULT_OK && data != null) {
when(data.getIntExtra(NewDataMenuActivity.IntentKey.CHOICE.keyName, -1)) {
0 -> createNewSession(false)
1 -> createNewSession(true)
2 -> createNewTransaction()
}
}
}
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
realmSessions.removeAllChangeListeners() realmSessions.removeAllChangeListeners()
} }
/** override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
* Init UI return this.rows[position]
*/ }
private fun initUI() {
disclaimerContainer.isVisible = Preferences.shouldShowDisclaimer(requireContext())
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm")
val betaLimitDate = sdf.parse("17/7/2019 10:00")
newCashGame.setOnClickListener { override fun numberOfRows(): Int {
return this.rows.size
}
if (Date().after(betaLimitDate)) { override fun viewTypeForPosition(position: Int): Int {
this.showEndOfBetaMessage() return rows[position].viewType
return@setOnClickListener }
}
SessionActivity.newInstance(requireContext(), false) override fun indexForRow(row: RowRepresentable): Int {
newSessionCreated = true return this.rows.indexOf(row)
} }
newTournament.setOnClickListener { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
SessionActivity.newInstance(requireContext(), sessionId = (row as Editable).id)
}
if (Date().after(betaLimitDate)) { /**
this.showEndOfBetaMessage() * Init UI
return@setOnClickListener */
} private fun initUI() {
SessionActivity.newInstance(requireContext(), true) disclaimerContainer.isVisible = Preferences.shouldShowDisclaimer(requireContext())
newSessionCreated = true
}
disclaimerDismiss.setOnClickListener { disclaimerDismiss.setOnClickListener {
Preferences.setStopShowingDisclaimer(requireContext()) Preferences.setStopShowingDisclaimer(requireContext())
@ -98,11 +115,13 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
.start() .start()
} }
} addButton.setOnClickListener {
activity?.let {
private fun showEndOfBetaMessage() { val options = ActivityOptionsCompat.makeSceneTransitionAnimation(it)
Toast.makeText(context, "Beta has ended. Please update with the Google Play version", Toast.LENGTH_LONG).show() val intent = Intent(requireContext(), NewDataMenuActivity::class.java)
startActivityForResult(intent, REQUEST_CODE_MENU, options.toBundle())
}
}
} }
/** /**
@ -110,6 +129,9 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
*/ */
private fun initData() { private fun initData() {
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm", Locale.getDefault())
betaLimitDate = sdf.parse("17/7/2019 10:00")
this.realmSessions = getRealm().where<Session>().findAll().sort("startDate", Sort.DESCENDING) this.realmSessions = getRealm().where<Session>().findAll().sort("startDate", Sort.DESCENDING)
this.realmSessions.addChangeListener { _, _ -> this.realmSessions.addChangeListener { _, _ ->
this.historyAdapter.refreshData() this.historyAdapter.refreshData()
@ -130,23 +152,37 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
} }
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable? { /**
return this.rows[position] * Create a new cash game
} */
private fun createNewSession(isTournament: Boolean) {
override fun numberOfRows(): Int { if (Date().after(betaLimitDate)) {
return this.rows.size this.showEndOfBetaMessage()
} return
}
override fun viewTypeForPosition(position: Int): Int { SessionActivity.newInstance(requireContext(), isTournament)
return rows[position].viewType newSessionCreated = true
} }
override fun indexForRow(row: RowRepresentable): Int { /**
return this.rows.indexOf(row) * Create a new transaction
*/
private fun createNewTransaction() {
if (Date().after(betaLimitDate)) {
this.showEndOfBetaMessage()
return
}
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { /**
SessionActivity.newInstance(requireContext(), sessionId = (row as Editable).id) * Show end of beta message
*/
private fun showEndOfBetaMessage() {
Toast.makeText(context, "Beta has ended. Please update with the Google Play version", Toast.LENGTH_LONG).show()
} }
} }

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/menuContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginEnd="16dp"
android:layout_marginBottom="72dp"
android:background="@android:color/transparent"
android:elevation="4dp"
android:orientation="vertical"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="visible">
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:transitionName="newButtonTransition"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:background="@color/gray_darker"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/newCashGame"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginTop="8dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingEnd="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/add_cash_game" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="@string/new_cash_game"
app:layout_constraintEnd_toEndOf="parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/newTournament"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingEnd="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/newCashGame">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/add_tournament" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="@string/new_tournament"
app:layout_constraintEnd_toEndOf="parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/newTransaction"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginBottom="8dp"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingEnd="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/newTournament">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:tint="@color/green"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/add_transaction" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/PokerAnalyticsTheme.TextView.RowTitle"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="@string/new_operation"
app:layout_constraintEnd_toEndOf="parent" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -7,38 +7,53 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.activity.HomeActivity"> tools:context=".ui.activity.HomeActivity">
<com.google.android.material.button.MaterialButton <com.google.android.material.appbar.AppBarLayout
android:id="@+id/newCashGame" android:id="@+id/appBar"
style="@style/PokerAnalyticsTheme.Button" android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:theme="@style/PokerAnalyticsTheme.Toolbar.Session"
android:layout_marginTop="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp"
android:text="@string/new_cash_game"
app:icon="@drawable/add_cash_game"
app:iconSize="28dp"
app:layout_constraintEnd_toStartOf="@+id/newTournament"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.button.MaterialButton <LinearLayout
android:id="@+id/newTournament" android:layout_width="match_parent"
style="@style/PokerAnalyticsTheme.Button" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:gravity="center"
android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_marginStart="8dp" android:padding="8dp">
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp" <com.google.android.material.chip.ChipGroup
android:text="@string/new_tournament" android:id="@+id/filtersTime"
app:icon="@drawable/add_tournament" android:layout_width="wrap_content"
app:iconSize="28dp" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent" app:chipSpacing="8dp"
app:layout_constraintHorizontal_bias="0.5" app:singleSelection="true">
app:layout_constraintStart_toEndOf="@+id/newCashGame"
app:layout_constraintTop_toTopOf="parent" /> <com.google.android.material.chip.Chip
android:id="@+id/filterAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/all" />
<com.google.android.material.chip.Chip
android:id="@+id/filterSessions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sessions" />
<com.google.android.material.chip.Chip
android:id="@+id/filterOperations"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/operations" />
</com.google.android.material.chip.ChipGroup>
</LinearLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
@ -48,7 +63,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/newCashGame" app:layout_constraintTop_toBottomOf="@+id/appBar"
tools:listitem="@layout/row_history_session" /> tools:listitem="@layout/row_history_session" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@ -70,6 +85,20 @@
app:layout_constraintVertical_bias="0.5" app:layout_constraintVertical_bias="0.5"
tools:visibility="visible" /> tools:visibility="visible" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_add"
android:tint="@color/black"
android:transitionName="floating_action_button"
app:fabSize="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/disclaimerContainer" android:id="@+id/disclaimerContainer"
android:layout_width="0dp" android:layout_width="0dp"

@ -11,6 +11,7 @@
<item name="android:navigationBarColor">@color/colorPrimary</item> <item name="android:navigationBarColor">@color/colorPrimary</item>
<item name="android:actionMenuTextColor">@color/white</item> <item name="android:actionMenuTextColor">@color/white</item>
<item name="colorControlNormal">@color/white</item> <item name="colorControlNormal">@color/white</item>
<item name="android:windowActivityTransitions">true</item>
<item name="bottomNavigationStyle">@style/PokerAnalyticsTheme.BottomNavigationView</item> <item name="bottomNavigationStyle">@style/PokerAnalyticsTheme.BottomNavigationView</item>
<item name="toolbarStyle">@style/PokerAnalyticsTheme.Toolbar</item> <item name="toolbarStyle">@style/PokerAnalyticsTheme.Toolbar</item>
@ -23,6 +24,7 @@
</style> </style>
<!-- Defaults --> <!-- Defaults -->
@ -241,6 +243,17 @@
<!-- Alert Dialog --> <!-- Alert Dialog -->
<style name="PokerAnalyticsTheme.MenuDialog" parent="PokerAnalyticsTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
<style name="PokerAnalyticsTheme.AlertDialog" parent="Theme.MaterialComponents.Dialog"> <style name="PokerAnalyticsTheme.AlertDialog" parent="Theme.MaterialComponents.Dialog">
<item name="colorAccent">@color/green</item> <item name="colorAccent">@color/green</item>
<item name="android:textColorPrimary">@color/white</item> <item name="android:textColorPrimary">@color/white</item>

Loading…
Cancel
Save