Update session layout

dev_raz_wip
Aurelien Hubert 7 years ago
parent 02471ed095
commit a672a40a90
  1. 8
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  2. 67
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  3. 23
      app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt
  4. 14
      app/src/main/java/net/pokeranalytics/android/util/Extensions.kt
  5. 5
      app/src/main/res/drawable/ic_arrow_right.xml
  6. 7
      app/src/main/res/font/roboto_black.xml
  7. 83
      app/src/main/res/layout/row_session_view.xml
  8. 1
      app/src/main/res/values/preloaded_fonts.xml
  9. 32
      app/src/main/res/values/styles.xml

@ -4,10 +4,11 @@ import android.text.InputType
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.ui.view.RowEditable
import net.pokeranalytics.android.ui.view.GameRow
import net.pokeranalytics.android.ui.view.RowEditable
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SimpleRow
import java.util.*
@ -60,4 +61,7 @@ open class Game : RealmObject(), RowRepresentableDataSource, LiveDataDataSource,
override fun isValidForSave(): Boolean {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}

@ -144,10 +144,51 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
*/
fun delete() {
realm.executeTransaction {
cleanup()
deleteFromRealm()
}
}
/**
* This method is called whenever a session is about to be deleted
*/
fun cleanup() {
this.sessionSet?.let { set ->
// get all sessions part of the deleted session set
val sessionsFromSet = set.sessions
// cleanup unecessary related objects
set.deleteFromRealm()
this.timeFrame?.deleteFromRealm()
this.result?.deleteFromRealm()
// make sessions recreate/find their session set
sessionsFromSet?.let { sessions ->
sessions.forEach { session ->
session.timeFrame?.notifySessionDateChange()
}
}
}
}
/**
* Return the game title
*/
fun getGameTitle(): String {
var gameTitle = ""
if (limit != null) {
gameTitle += limit
}
if (game != null) {
gameTitle += game?.title
}
return gameTitle
}
companion object {
fun newInstance(): Session {
var session: Session = Session()
@ -191,32 +232,6 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
return 0.0
}
/**
* This method is called whenever a session is about to be deleted
*/
fun cleanup() {
this.sessionSet?.let { set ->
// get all sessions part of the deleted session set
val sessionsFromSet = set.sessions
// cleanup unecessary related objects
set.deleteFromRealm()
this.timeFrame?.deleteFromRealm()
this.result?.deleteFromRealm()
// make sessions recreate/find their session set
sessionsFromSet?.let { sessions ->
sessions.forEach { session ->
session.timeFrame?.notifySessionDateChange()
}
}
}
}
override fun adapterRows(): ArrayList<RowRepresentable> {
val rows = ArrayList<RowRepresentable>()
rows.addAll(SessionRow.getRowsForState(getState()))

@ -1,15 +1,15 @@
package net.pokeranalytics.android.ui.view
import android.widget.FrameLayout
import android.content.Context
import android.graphics.Color
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.constraintlayout.widget.ConstraintLayout
import kotlinx.android.synthetic.main.row_session_view.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session
import timber.log.Timber
import net.pokeranalytics.android.util.getDayNumber
import net.pokeranalytics.android.util.getShortDayName
class SessionRowView : FrameLayout {
@ -51,7 +51,22 @@ class SessionRowView : FrameLayout {
* Set the session data to the view
*/
fun setData(session: Session) {
rowHistorySession.date.text = session.creationDate.toString()
rowHistorySession.dateDay.text = session.creationDate.getShortDayName()
rowHistorySession.dateNumber.text = session.creationDate.getDayNumber()
// TODO
var gameTitle = session.getGameTitle()
if (gameTitle.isEmpty()) {
gameTitle = "Game title here"
}
rowHistorySession.gameType.text = gameTitle
rowHistorySession.gameInfo.text = "Game info: duration, table size, ..."
rowHistorySession.gameResult.text = "$ 0"
}
}

@ -5,6 +5,7 @@ import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import java.text.DateFormat
import java.text.DecimalFormat
import java.text.SimpleDateFormat
import java.util.*
@ -23,17 +24,26 @@ fun Double.toCurrency(): String {
// Date
// Return a short string of the date
fun Date.short(): String {
return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(this)
}
// Return a medium string of the date
fun Date.medium(): String {
return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(this)
}
// Return the full string of the date
fun Date.full(): String {
return DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(this)
}
// Return the day number of the date
fun Date.getDayNumber() : String {
return SimpleDateFormat("dd", Locale.getDefault()).format(this)
}
// Return the 3 first letters of the date's day
fun Date.getShortDayName() : String {
return SimpleDateFormat("EE", Locale.getDefault()).format(this)
}
// Toast

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
</vector>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="name=Roboto&amp;weight=900"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>

@ -8,18 +8,85 @@
android:padding="16dp">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/date"
android:id="@+id/dateDay"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="true"
app:layout_constraintBottom_toTopOf="@+id/dateNumber"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread"
tools:text="THU" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/dateNumber"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.DateNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/dateDay"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/dateDay"
app:layout_constraintTop_toBottomOf="@+id/dateDay"
tools:text="21" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/gameType"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="8dp"
app:layout_constraintBottom_toTopOf="@+id/gameInfo"
app:layout_constraintEnd_toStartOf="@+id/linearLayout"
app:layout_constraintStart_toEndOf="@+id/dateDay"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="$300 NL Hold'em" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/gameInfo"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginStart="0dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/linearLayout"
app:layout_constraintStart_toStartOf="@+id/gameType"
app:layout_constraintTop_toBottomOf="@+id/gameType"
tools:text="Settings of this game" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/nextArrow"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/gameResult"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="$500" />
</LinearLayout>
<ImageView
android:id="@+id/nextArrow"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_arrow_right"
android:tint="@color/gray_light"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="This date" />
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -2,6 +2,7 @@
<resources>
<array name="preloaded_fonts" translatable="false">
<item>@font/roboto</item>
<item>@font/roboto_black</item>
<item>@font/roboto_bold</item>
<item>@font/roboto_light</item>
</array>

@ -92,12 +92,44 @@
<item name="android:fontFamily">@font/roboto</item>
</style>
<!-- Bottom Sheet -->
<style name="PokerAnalyticsTheme.TextView.BottomSheetValue">
<item name="android:textSize">22sp</item>
<item name="android:textColor">@color/white</item>
<item name="android:fontFamily">@font/roboto</item>
</style>
<!-- Session Row -->
<style name="PokerAnalyticsTheme.TextView.SessionRow">
<item name="android:textColor">@color/white</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
</style>
<style name="PokerAnalyticsTheme.TextView.SessionRow.Date">
<item name="android:textSize">12sp</item>
<item name="android:fontFamily">@font/roboto</item>r
</style>
<style name="PokerAnalyticsTheme.TextView.SessionRow.DateNumber">
<item name="android:textSize">18sp</item>
<item name="android:fontFamily">@font/roboto_black</item>
<item name="android:letterSpacing">0.05</item>
</style>
<style name="PokerAnalyticsTheme.TextView.SessionRow.Title">
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">@font/roboto</item>
</style>
<style name="PokerAnalyticsTheme.TextView.SessionRow.Subtitle">
<item name="android:textSize">12sp</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:textColor">@color/kaki_lighter</item>
</style>
<style name="PokerAnalyticsTheme.TextView.SessionRow.Result">
<item name="android:textSize">20sp</item>
<item name="android:fontFamily">@font/roboto_light</item>
<item name="android:textColor">@color/green</item>
</style>
<!-- EditText -->
<style name="PokerAnalyticsTheme.EditText" parent="Widget.AppCompat.EditText">

Loading…
Cancel
Save