Improve Session history UI

feature/top10
Aurelien Hubert 7 years ago
parent 42d97a3672
commit 665d8f491d
  1. 53
      app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt
  2. 4
      app/src/main/java/net/pokeranalytics/android/util/Extensions.kt
  3. 121
      app/src/main/res/layout/row_session_view.xml
  4. 1
      app/src/main/res/values/styles.xml

@ -6,13 +6,16 @@ import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import kotlinx.android.synthetic.main.row_session_view.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.TableSize
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.util.getDayNumber
import net.pokeranalytics.android.util.getShortDayName
import net.pokeranalytics.android.util.toCurrency
import timber.log.Timber
class SessionRowView : FrameLayout {
@ -55,16 +58,58 @@ class SessionRowView : FrameLayout {
*/
fun setData(session: Session) {
// Date
rowHistorySession.dateDay.text = session.creationDate.getShortDayName()
rowHistorySession.dateNumber.text = session.creationDate.getDayNumber()
rowHistorySession.gameType.text = session.getGameTitle()
rowHistorySession.gameInfo.text = session.getDuration(context)
rowHistorySession.gameResult.text = session.result?.netResult?.toCurrency() ?: "$0"
// Title / Game type
var title = ""
if (session.cgSmallBlind != null && session.cgBigBlind != null) {
title += session.getBlinds()
}
session.game?.let {
title += session.getGameTitle()
}
title += if (title.isEmpty()) "--" else ""
rowHistorySession.sessionTitle.text = title
// Duration
rowHistorySession.sessionInfoDurationIcon.isVisible = session.timeFrame != null
rowHistorySession.sessionInfoDurationValue.isVisible = session.timeFrame != null
session.timeFrame?.let {
rowHistorySession.sessionInfoDurationValue.text = session.getDuration(context)
}
// Location
rowHistorySession.sessionInfoLocationIcon.isVisible = session.location != null
rowHistorySession.sessionInfoLocationValue.isVisible = session.location != null
session.location?.let {
rowHistorySession.sessionInfoLocationValue.text = it.name
}
// Table size
rowHistorySession.sessionInfoTableIcon.isVisible = session.tableSize != null
rowHistorySession.sessionInfoTableValue.isVisible = session.tableSize != null
session.tableSize?.let {
rowHistorySession.sessionInfoTableValue.text = TableSize.all[it].localizedTitle(context)
}
// State
if (session.getState() == SessionState.STARTED) {
rowHistorySession.gameResult.isVisible = false
rowHistorySession.playingIcon.isVisible = true
rowHistorySession.playingTitle.isVisible = true
} else {
rowHistorySession.gameResult.isVisible = true
rowHistorySession.playingIcon.isVisible = false
rowHistorySession.playingTitle.isVisible = false
val result = session.result?.netResult ?: 0.0
val resultColor = if (result >= 0.0) R.color.green else R.color.red
rowHistorySession.gameResult.text = result.toCurrency()
rowHistorySession.gameResult.setTextColor(ContextCompat.getColor(context, resultColor))
}
}

@ -104,13 +104,11 @@ fun Date.getDuration(context: Context, toDate: Date) : String {
val numOfDays = (difference / (1000 * 60 * 60 * 24))
val hours = (difference / (1000 * 60 * 60))
val minutes = (difference / (1000 * 60)) % 60
val seconds = (difference / 1000) % 60
val hoursStr = if (hours < 10) "0$hours" else "$hours"
val minutesStr = if (minutes < 10) "0$minutes" else "$minutes"
val secondsStr = if (seconds < 10) "0$seconds" else "$seconds"
return "$hoursStr:$minutesStr:$secondsStr"
return "$hoursStr:$minutesStr"
}

@ -36,14 +36,14 @@
tools:text="21" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/gameType"
android:id="@+id/sessionTitle"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintBottom_toTopOf="@+id/gameInfo"
app:layout_constraintBottom_toTopOf="@+id/sessionInfoLayout"
app:layout_constraintEnd_toStartOf="@+id/linearLayout"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/dateDay"
@ -51,37 +51,142 @@
app:layout_constraintVertical_chainStyle="packed"
tools:text="$300 NL Hold'em" />
<LinearLayout
android:id="@+id/sessionInfoLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/linearLayout"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/sessionTitle"
app:layout_constraintTop_toBottomOf="@+id/sessionTitle">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/sessionInfoDurationIcon"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/clock"
android:tint="@color/kaki_lighter"
android:visibility="gone"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/gameInfo"
android:id="@+id/sessionInfoDurationValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/roboto"
android:textAllCaps="true"
android:textColor="@color/kaki_lighter"
android:textSize="12sp"
android:visibility="gone"
tools:text="4:21"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/sessionInfoLocationIcon"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/pin"
android:tint="@color/kaki_lighter"
android:visibility="gone"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/sessionInfoLocationValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/roboto"
android:textColor="@color/kaki_lighter"
android:textSize="12sp"
android:visibility="gone"
tools:text="Rennes, France"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/sessionInfoTableIcon"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/info"
android:tint="@color/kaki_lighter"
android:visibility="gone"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/sessionInfoTableValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/roboto"
android:textColor="@color/kaki_lighter"
android:textSize="12sp"
android:visibility="gone"
tools:text="6-max"
tools:visibility="visible" />
</LinearLayout>
<!--
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/sessionSubtitle"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/linearLayout"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/gameType"
app:layout_constraintTop_toBottomOf="@+id/gameType"
tools:text="Settings of this game" />
app:layout_constraintStart_toStartOf="@+id/sessionTitle"
app:layout_constraintTop_toBottomOf="@+id/sessionTitle"
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:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@+id/gameInfo"
app:layout_constraintBottom_toBottomOf="@+id/sessionInfoLayout"
app:layout_constraintEnd_toStartOf="@+id/nextArrow"
app:layout_constraintTop_toTopOf="@+id/gameType">
app:layout_constraintTop_toTopOf="@+id/sessionTitle">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/gameResult"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
tools:text="$500" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/playingIcon"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/chip"
android:tint="@color/green"
android:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/playingTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto_medium"
android:text="@string/running_session_state"
android:textAllCaps="true"
android:textSize="10sp"
android:visibility="gone" />
</LinearLayout>
<ImageView

@ -118,6 +118,7 @@
<style name="PokerAnalyticsTheme.TextView.SessionRow.Date">
<item name="android:textSize">12sp</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:letterSpacing">0.02</item>
</style>
<style name="PokerAnalyticsTheme.TextView.SessionRow.DateNumber">

Loading…
Cancel
Save