From e66b3e8cd45a97a37981c7d2ae259b00878cf0c0 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 7 Mar 2019 13:04:05 +0100 Subject: [PATCH] Add delete empty session behavior when back pressed --- .../android/ui/activity/SessionActivity.kt | 27 +++++++++++-------- .../android/ui/fragment/SessionFragment.kt | 14 ++++++++++ app/src/main/res/layout/activity_session.xml | 2 +- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt index 12be0c7d..4c8cf9da 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.activity import android.content.Context import android.content.Intent import android.os.Bundle +import android.view.MenuItem import kotlinx.android.synthetic.main.activity_session.* import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity @@ -18,15 +19,12 @@ class SessionActivity: PokerAnalyticsActivity() { companion object { fun newInstance(context: Context, isTournament: Boolean? = false, sessionId: String? = "") { val intent = Intent(context, SessionActivity::class.java) - isTournament?.let { intent.putExtra(IntentKey.IS_TOURNAMENT.keyName, isTournament) } - sessionId?.let { intent.putExtra(IntentKey.SESSION_ID.keyName, sessionId) } - context.startActivity(intent) } @@ -39,21 +37,28 @@ class SessionActivity: PokerAnalyticsActivity() { initUI() } + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + item?.let { + if (it.itemId == android.R.id.home) { + onBackPressed() + } + } + return super.onOptionsItemSelected(item) + } + + override fun onBackPressed() { + super.onBackPressed() + (sessionFragment as SessionFragment).onBackPressed() + } + /** * Init UI */ private fun initUI() { val sessionId = intent.getStringExtra(IntentKey.SESSION_ID.keyName) val isTournament = intent.getBooleanExtra(IntentKey.IS_TOURNAMENT.keyName, false) - val fragment = newSessionFragment as SessionFragment + val fragment = sessionFragment as SessionFragment fragment.setData(isTournament, sessionId) } - /** - * Init data - */ - private fun initData() { - - } - } \ No newline at end of file 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 21e8b064..68684f18 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 @@ -38,6 +38,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott private var sessionMenu: Menu? = null private val oldRows: ArrayList = ArrayList() + private var sessionHasBeenCustomized = false private val handler: Handler = Handler() private val refreshTimer: Runnable = object : Runnable { override fun run() { @@ -105,6 +106,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott } override fun onRowValueChanged(value: Any?, row: RowRepresentable) { + sessionHasBeenCustomized = true currentSession.updateValue(value, row) sessionAdapter.refreshRow(row) when (row) { @@ -134,6 +136,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott } floatingActionButton.setOnClickListener { + sessionHasBeenCustomized = true manageSessionState() } } @@ -278,6 +281,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott val sessionRealm = realm.where().equalTo("id", sessionId).findFirst() if (sessionRealm != null) { currentSession = sessionRealm + sessionHasBeenCustomized = true } else { realm.beginTransaction() currentSession = Session.newInstance(realm, isTournament) @@ -296,6 +300,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott updateSessionUI() } } + sessionHasBeenCustomized = false } @@ -308,4 +313,13 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott updateSessionUI() } + /** + * Called when the user pressed back on the parent activity + */ + fun onBackPressed() { + if (!sessionHasBeenCustomized) { + currentSession.delete() + } + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_session.xml b/app/src/main/res/layout/activity_session.xml index 66d4c60a..b904bdad 100644 --- a/app/src/main/res/layout/activity_session.xml +++ b/app/src/main/res/layout/activity_session.xml @@ -6,7 +6,7 @@ android:orientation="vertical">