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 e83f7c77..ed6a31a1 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 @@ -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. } + + + } 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 390fac79..1b7acfe3 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 @@ -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 { val rows = ArrayList() rows.addAll(SessionRow.getRowsForState(getState())) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt index b3df53be..b1300f1c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt @@ -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" + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt b/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt index d4d37783..a4acec64 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt @@ -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 diff --git a/app/src/main/res/drawable/ic_arrow_right.xml b/app/src/main/res/drawable/ic_arrow_right.xml new file mode 100644 index 00000000..ff5a73ff --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_right.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/font/roboto_black.xml b/app/src/main/res/font/roboto_black.xml new file mode 100644 index 00000000..426e6946 --- /dev/null +++ b/app/src/main/res/font/roboto_black.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/layout/row_session_view.xml b/app/src/main/res/layout/row_session_view.xml index 4927b945..e7bfb5b1 100644 --- a/app/src/main/res/layout/row_session_view.xml +++ b/app/src/main/res/layout/row_session_view.xml @@ -8,18 +8,85 @@ android:padding="16dp"> + + + + + + + + + + + + + + + app:layout_constraintTop_toTopOf="parent" /> + \ No newline at end of file diff --git a/app/src/main/res/values/preloaded_fonts.xml b/app/src/main/res/values/preloaded_fonts.xml index 1cecfb90..212d1794 100644 --- a/app/src/main/res/values/preloaded_fonts.xml +++ b/app/src/main/res/values/preloaded_fonts.xml @@ -2,6 +2,7 @@ @font/roboto + @font/roboto_black @font/roboto_bold @font/roboto_light diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a32609a1..407bcfa9 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -92,12 +92,44 @@ @font/roboto + + + + + + + + + +