diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt index e7a82b7c..eccf538f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt @@ -139,7 +139,7 @@ class PokerAnalyticsMigration : RealmMigration { } } - schema.get("Filter")?.addField("filterableTypeOrdinal", Integer::class.java) + schema.get("Filter")?.addField("filterableTypeUniqueIdentifier", Integer::class.java) schema.get("Filter")?.addField("useCount", Int::class.java) schema.get("Filter")?.removeField("usageCount") currentVersion++ diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index 7d124875..3f1e481b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -28,9 +28,9 @@ open class Filter : RealmObject(), RowRepresentable, Identifiable, Deletable, Co companion object { // Create a new instance - fun newInstance(realm: Realm, filterableType:Int): Filter { + fun newInstance(filterableTypeUniqueIdentifier:Int): Filter { val filter = Filter() - filter.filterableTypeOrdinal = filterableType + filter.filterableTypeUniqueIdentifier = filterableTypeUniqueIdentifier return filter //return realm.copyToRealm(filter) } @@ -67,12 +67,12 @@ open class Filter : RealmObject(), RowRepresentable, Identifiable, Deletable, Co var filterConditions: RealmList = RealmList() private set - private var filterableTypeOrdinal: Int? = null + private var filterableTypeUniqueIdentifier: Int? = null val filterableType: FilterableType get() { - this.filterableTypeOrdinal?.let { - return FilterableType.values()[it] + this.filterableTypeUniqueIdentifier?.let { + return FilterableType.valueByIdentifier(it) } return FilterableType.ALL } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt index 62ebcdd6..a78e3435 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt @@ -32,7 +32,7 @@ class FiltersActivity : PokerAnalyticsActivity() { private fun getIntent(context: Context, filterId: String?, currentFilterable: FilterableType, hideMostUsedFilters: Boolean = false): Intent { val intent = Intent(context, FiltersActivity::class.java) - intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.ordinal) + intent.putExtra(IntentKey.FILTERABLE_TYPE.keyName, currentFilterable.uniqueIdentifier) intent.putExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, hideMostUsedFilters) filterId?.let { intent.putExtra(IntentKey.FILTER_ID.keyName, it) @@ -59,9 +59,9 @@ class FiltersActivity : PokerAnalyticsActivity() { val fragmentManager = supportFragmentManager val fragmentTransaction = fragmentManager.beginTransaction() val filterId = intent.getStringExtra(IntentKey.FILTER_ID.keyName) - val ordinal = intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0) + val uniqueIdentifier= intent.getIntExtra(IntentKey.FILTERABLE_TYPE.keyName, 0) val hideMostUsedFilters = intent.getBooleanExtra(IntentKey.HIDE_MOST_USED_FILTERS.keyName, false) - val filterableType = FilterableType.values()[ordinal] + val filterableType = FilterableType.valueByIdentifier(uniqueIdentifier) fragment = FiltersFragment() fragmentTransaction.add(R.id.container, fragment) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt index 9bd536d8..dceb2885 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt @@ -54,7 +54,7 @@ open class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataS } open fun retrieveItems(realm: Realm): RealmResults { - return realm.sorted(this.identifiableClass, editableOnly = true, filterableTypeOrdinal = dataType.subType) + return realm.sorted(this.identifiableClass, editableOnly = true, filterableTypeUniqueIdentifier = dataType.subType) } override fun deletableItems() : List { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt index 7ac5b056..eb36582f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt @@ -158,7 +158,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, } moreFilters.setOnClickListener { - LiveData.FILTER.subType = filterableType.ordinal + LiveData.FILTER.subType = filterableType.uniqueIdentifier DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false) } @@ -176,9 +176,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, currentFilter = realm.copyFromRealm(Filter.getFilterBydId(realm, it)) isUpdating = true } ?: run { - realm.beginTransaction() - currentFilter = Filter.newInstance(realm, this.filterableType.ordinal) //realm.copyFromRealm(Filter.newInstanceForResult(realm, this.filterableType.ordinal)) - realm.commitTransaction() + currentFilter = Filter.newInstance(this.filterableType.uniqueIdentifier) //realm.copyFromRealm(Filter.newInstanceForResult(realm, this.filterableType.ordinal)) } // Create a copy if the user cancels the updates @@ -202,7 +200,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, private fun updateMostUsedFilters() { var nbChips = 0 - val filters = getRealm().sorted(Filter::class.java, editableOnly = false, filterableTypeOrdinal = this.filterableType.ordinal) + val filters = getRealm().sorted(Filter::class.java, editableOnly = false, filterableTypeUniqueIdentifier = this.filterableType.uniqueIdentifier) val currentFilterId = Preferences.getActiveFilterId(requireContext()) if (isUpdating || filters.isEmpty() || (filters.size == 1 && filters.first()?.id == currentFilterId)) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt b/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt index 17826991..64f687ba 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt @@ -8,6 +8,8 @@ import io.realm.kotlin.where import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.ui.activity.FiltersActivity import net.pokeranalytics.android.util.Preferences +import net.pokeranalytics.android.util.enumerations.IntIdentifiable +import net.pokeranalytics.android.util.enumerations.IntSearchable enum class FilterActivityRequestCode { SELECT_FILTER, @@ -15,13 +17,21 @@ enum class FilterActivityRequestCode { ; } -enum class FilterableType { - ALL, - SESSION, - TRANSACTION, - BANKROLL, - HAND_HISTORY, +enum class FilterableType(override var uniqueIdentifier: Int): IntIdentifiable { + ALL(0), + SESSION(1), + TRANSACTION(2), + BANKROLL(3), + HAND_HISTORY(4), ; + + companion object : IntSearchable { + + override fun valuesInternal(): Array { + return values() + } + } + } interface FilterHandler { diff --git a/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt b/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt index 074abbd0..aa15c8e6 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/extensions/RealmExtensions.kt @@ -35,7 +35,7 @@ inline fun Realm.getOrCreate(name: String) : T { * Returns all entities of the [clazz] sorted with their default sorting * Set [editableOnly] to true to only receive entities that can be edited */ -fun < T : RealmModel> Realm.sorted(clazz: Class, editableOnly: Boolean = false, filterableTypeOrdinal: Int? = null) : RealmResults { +fun < T : RealmModel> Realm.sorted(clazz: Class, editableOnly: Boolean = false, filterableTypeUniqueIdentifier: Int? = null) : RealmResults { val query = this.where(clazz) when (clazz.kotlin) { TransactionType::class -> { @@ -44,8 +44,8 @@ fun < T : RealmModel> Realm.sorted(clazz: Class, editableOnly: Boolean = fals } } Filter::class -> { - filterableTypeOrdinal?.let { - query.equalTo("filterableTypeOrdinal", it) + filterableTypeUniqueIdentifier?.let { + query.equalTo("filterableTypeUniqueIdentifier", it) } } }