diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 420a58f2..83337bbe 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -63,7 +63,7 @@ open class Bankroll(name: String = "") : RealmObject(), Savable, override fun boolForRow(row: RowRepresentable): Boolean { when (row) { - BankrollRow.LIVE -> return this.live + BankrollRow.LIVE -> return !this.live else -> return super.boolForRow(row) } } @@ -84,8 +84,9 @@ open class Bankroll(name: String = "") : RealmObject(), Savable, override fun updateValue(value: Any?, row: RowRepresentable) { when (row) { SimpleRow.NAME -> this.name = value as String? ?: "" - BankrollRow.LIVE -> this.live = value as Boolean? ?: false - + BankrollRow.LIVE -> { + this.live = if (value is Boolean) !value else false + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt index f9cf1250..501d43dc 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.model.realm import com.google.android.libraries.places.api.model.Place import io.realm.RealmObject +import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -30,6 +31,9 @@ open class Location : RealmObject(), Savable, StaticRowRepresentableDataSource, // the latitude of the location var latitude: Double? = null + @Ignore + var isLookingForPlaces = false + override fun getDisplayName(): String { return this.name } @@ -53,6 +57,13 @@ open class Location : RealmObject(), Savable, StaticRowRepresentableDataSource, } } + override fun boolForRow(row: RowRepresentable): Boolean { + return when(row) { + LocationRow.LOCATE_ME -> return isLookingForPlaces + else -> super.boolForRow(row) + } + } + override fun editDescriptors(row: RowRepresentable): ArrayList { val data = java.util.ArrayList() when (row) { @@ -78,6 +89,7 @@ open class Location : RealmObject(), Savable, StaticRowRepresentableDataSource, SimpleRow.NAME -> this.name = value as String? ?: "" LocationRow.ADDRESS -> this.address = value as String? ?: "" LocationRow.LOCATE_ME -> { + isLookingForPlaces = false if (value is Place) { setPlace(value) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index 7ccfca7a..eec7dc61 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -69,12 +69,12 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { when (row) { - LocationRow.LOCATE_ME -> PlacePickerManager.create(parentActivity, row, this) - else -> { - BottomSheetFragment.create( - fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row) - ) + LocationRow.LOCATE_ME -> { + (item as Location).isLookingForPlaces = true + PlacePickerManager.create(parentActivity, row, this) + rowRepresentableAdapter.refreshRow(row) } + else -> BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row)) } } @@ -87,7 +87,9 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, (this.item as Savable).updateValue(value, row) } when (row) { - LocationRow.LOCATE_ME -> rowRepresentableAdapter.notifyDataSetChanged() + LocationRow.LOCATE_ME -> { + rowRepresentableAdapter.notifyDataSetChanged() + } else -> rowRepresentableAdapter.refreshRow(row) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 0624c113..684a1172 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -21,7 +21,7 @@ import net.pokeranalytics.android.util.NULL_TEXT class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSource { - private var rowRepresentables: ArrayList = ArrayList() + private var rowRepresentables: ArrayList = ArrayList() private lateinit var statsAdapter: RowRepresentableAdapter @@ -56,7 +56,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } override fun contentDescriptorForRow(row: RowRepresentable): DisplayDescriptor? { - var dc = DisplayDescriptor() + val dc = DisplayDescriptor() dc.textFormat = TextFormat(NULL_TEXT) if (row is StatRepresentable) { context?.let { context -> diff --git a/app/src/main/java/net/pokeranalytics/android/ui/helpers/PlacePickerManager.kt b/app/src/main/java/net/pokeranalytics/android/ui/helpers/PlacePickerManager.kt index cb4adbcc..919653c2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/helpers/PlacePickerManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/helpers/PlacePickerManager.kt @@ -16,22 +16,26 @@ class PlacePickerManager { activity: PokerAnalyticsActivity, row: RowRepresentable, delegate: RowRepresentableDelegate, - maxResults: Int? = 2 + maxResults: Int? = 3 ) { activity.askForPlacesRequest { success, places -> if (success && places.size > 0) { val placesArray = ArrayList() for ((index, place) in places.withIndex()) { placesArray.add(place.place.name.toString()) - if (index == maxResults) { + if (index == (maxResults ?: 3) - 1) { break } } val builder = AlertDialog.Builder(activity) builder.setItems(placesArray.toTypedArray()) { _, which -> delegate.onRowValueChanged(places[which].place, row) + }.setOnCancelListener { + delegate.onRowValueChanged(null, row) } builder.show() + } else { + delegate.onRowValueChanged(null, row) } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index e56829b7..086b172e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -7,6 +7,8 @@ import androidx.appcompat.widget.AppCompatImageView import androidx.appcompat.widget.AppCompatTextView import androidx.appcompat.widget.SwitchCompat import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isVisible +import androidx.core.widget.ContentLoadingProgressBar import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.row_history_session.view.* import kotlinx.android.synthetic.main.row_stats_title_value.view.* @@ -205,6 +207,8 @@ enum class RowViewType(private var layoutRes: Int) { inner class RowButtonViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { itemView.findViewById(R.id.title).text = row.localizedTitle(itemView.context) + itemView.findViewById(R.id.title).isVisible = !adapter.dataSource.boolForRow(row) + itemView.findViewById(R.id.progressBar).isVisible = adapter.dataSource.boolForRow(row) val listener = View.OnClickListener { adapter.delegate?.onRowSelected(position, row) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt index 68eb181d..851e6375 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt @@ -12,7 +12,7 @@ enum class BankrollRow : RowRepresentable { override val resId: Int? get() { return when (this) { - LIVE -> R.string.live + LIVE -> R.string.online } } diff --git a/app/src/main/res/layout/row_button.xml b/app/src/main/res/layout/row_button.xml index 88759911..3a06d293 100644 --- a/app/src/main/res/layout/row_button.xml +++ b/app/src/main/res/layout/row_button.xml @@ -4,23 +4,36 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="56dp" android:background="?selectableItemBackground"> + +