diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c296be62..8cf3f769 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -109,6 +109,11 @@
android:launchMode="singleTop"
android:screenOrientation="portrait" />
+
+
().equalTo("id", filterId).findFirst()
}
- inline fun queryOn(realm: Realm, query: Query, sortField: String? = null): RealmResults {
- val realmQuery = realm.where()
- sortField?.let {
- return query.queryWith(realmQuery).sort(it).findAll()
- } ?: run {
- return query.queryWith(realmQuery).findAll()
- }
- }
- }
+ inline fun queryOn(realm: Realm, query: Query, sortField: String? = null): RealmResults {
+ val realmQuery = realm.where()
+ sortField?.let {
+ return query.queryWith(realmQuery).sort(it).findAll()
+ } ?: run {
+ return query.queryWith(realmQuery).findAll()
+ }
+ }
+ }
+
+ override val viewType: Int
+ get() = RowViewType.TITLE_VALUE_ACTION.ordinal
+ override val imageRes: Int?
+ get() = R.drawable.ic_outline_settings
+ override val imageTint: Int?
+ get() = R.color.green
+ override val imageClickable: Boolean?
+ get() = true
+
@PrimaryKey
- override var id = UUID.randomUUID().toString()
+ override var id = UUID.randomUUID().toString()
// the queryWith name
var name: String = ""
- get() {
- if (field.isEmpty()) {
- return this.query.defaultName
- }
- return field
- }
+ get() {
+ if (field.isEmpty()) {
+ return this.query.defaultName
+ }
+ return field
+ }
- override var useCount: Int = 0
+ override var useCount: Int = 0
var filterConditions: RealmList = RealmList()
private set
- private var filterableTypeUniqueIdentifier: Int? = null
+ private var filterableTypeUniqueIdentifier: Int? = null
- val filterableType: FilterableType
- get() {
- this.filterableTypeUniqueIdentifier?.let {
- return FilterableType.valueByIdentifier(it)
- }
- return FilterableType.ALL
- }
+ val filterableType: FilterableType
+ get() {
+ this.filterableTypeUniqueIdentifier?.let {
+ return FilterableType.valueByIdentifier(it)
+ }
+ return FilterableType.ALL
+ }
fun createOrUpdateFilterConditions(filterConditionRows: ArrayList) {
- println("list of querys saving: ${filterConditionRows.map { it.id }}")
- println("list of querys previous: ${this.filterConditions.map { it.queryCondition.id }}")
- filterConditionRows
+ Timber.d("list of querys saving: ${filterConditionRows.map { it.id }}")
+ Timber.d("list of querys previous: ${this.filterConditions.map { it.queryCondition.id }}")
+ filterConditionRows
.map {
it.groupId
}
.distinct()
- .forEach { groupId->
+ .forEach { groupId ->
filterConditionRows
.filter {
it.groupId == groupId
}
.apply {
- println("list of querys: ${this.map { it.id }}")
- val casted = arrayListOf()
- casted.addAll(this)
- val newFilterCondition = FilterCondition(casted)
- val previousCondition = filterConditions.filter {
- it.filterName == newFilterCondition.filterName && it.operator == newFilterCondition.operator
- }
- filterConditions.removeAll(previousCondition)
- filterConditions.add(newFilterCondition)
- }
+ Timber.d("list of querys: ${this.map { it.id }}")
+ val casted = arrayListOf()
+ casted.addAll(this)
+ val newFilterCondition = FilterCondition(casted)
+ val previousCondition = filterConditions.filter {
+ it.filterName == newFilterCondition.filterName && it.operator == newFilterCondition.operator
+ }
+ filterConditions.removeAll(previousCondition)
+ filterConditions.add(newFilterCondition)
+ }
}
}
- fun remove(filterCategoryRow: FilterCategoryRow) {
- val sections = filterCategoryRow.filterSectionRows.map { it.name }
- val savedSections = filterConditions.filter { sections.contains(it.sectionName) }
- this.filterConditions.removeAll(savedSections)
- }
+ fun remove(filterCategoryRow: FilterCategoryRow) {
+ val sections = filterCategoryRow.filterSectionRows.map { it.name }
+ val savedSections = filterConditions.filter { sections.contains(it.sectionName) }
+ this.filterConditions.removeAll(savedSections)
+ }
fun countBy(filterCategoryRow: FilterCategoryRow): Int {
val sections = filterCategoryRow.filterSectionRows.map { it.name }
- println("list of sections $sections")
- val savedSections = filterConditions.filter { sections.contains(it.sectionName) }.flatMap { it.queryCondition.id }
- println("list of savedSections $savedSections")
- return savedSections.size
+ Timber.d("list of sections $sections")
+ val savedSections = filterConditions.filter { sections.contains(it.sectionName) }.flatMap { it.queryCondition.id }
+ Timber.d("list of savedSections $savedSections")
+ return savedSections.size
}
fun contains(filterElementRow: QueryCondition): Boolean {
- println("list of saved queries ${filterConditions.map { it.queryCondition.id }}")
- println("list of contains ${filterElementRow.id}")
- val contained = filterConditions.flatMap{ it.queryCondition.id }.contains(filterElementRow.id.first())
- println("list of : $contained")
- return contained
+ Timber.d("list of saved queries ${filterConditions.map { it.queryCondition.id }}")
+ Timber.d("list of contains ${filterElementRow.id}")
+ val contained = filterConditions.flatMap { it.queryCondition.id }.contains(filterElementRow.id.first())
+ Timber.d("list of : $contained")
+ return contained
}
/**
* Get the saved value for the given [filterElementRow]
*/
- fun loadValueForElement(filterElementRow: QueryCondition) {
+ fun loadValueForElement(filterElementRow: QueryCondition) {
val filtered = filterConditions.filter {
it.queryCondition.id == filterElementRow.id
}
if (filtered.isNotEmpty()) {
- return filterElementRow.updateValueBy(filtered.first())
+ return filterElementRow.updateValueBy(filtered.first())
}
}
inline fun results(firstField: String? = null, secondField: String? = null): RealmResults {
- val realmQuery = realm.where()
+ val realmQuery = realm.where()
- if (firstField != null && secondField != null) {
- return this.query.queryWith(realmQuery).distinct(firstField, secondField).findAll()
- }
+ if (firstField != null && secondField != null) {
+ return this.query.queryWith(realmQuery).distinct(firstField, secondField).findAll()
+ }
- if (firstField != null) {
- return this.query.queryWith(realmQuery).distinct(firstField).findAll()
- }
+ if (firstField != null) {
+ return this.query.queryWith(realmQuery).distinct(firstField).findAll()
+ }
- return this.query.queryWith(realmQuery).findAll()
- }
+ return this.query.queryWith(realmQuery).findAll()
+ }
- val query: Query
- get() {
- val query = Query()
- this.filterConditions.forEach {
- query.add(it.queryCondition)
- }
- return query
- }
+ val query: Query
+ get() {
+ val query = Query()
+ this.filterConditions.forEach {
+ query.add(it.queryCondition)
+ }
+ return query
+ }
- override fun getDisplayName(context: Context): String {
- if (name.isNotEmpty()) return name
- return this.query.getName(context)
- }
+ override fun getDisplayName(context: Context): String {
+ if (name.isNotEmpty()) return name
+ return this.query.getName(context)
+ }
- override fun isValidForDelete(realm: Realm): Boolean {
+ override fun isValidForDelete(realm: Realm): Boolean {
return true
}
override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int {
return R.string.relationship_error
}
+
+ override val bottomSheetType: BottomSheetType
+ get() {
+ return BottomSheetType.EDIT_TEXT
+ }
+
+ override fun localizedTitle(context: Context): String {
+ return context.getString(R.string.name)
+ }
+
+ override fun editingDescriptors(map: Map): ArrayList? {
+ val defaultValue: String? by map
+ return arrayListOf(RowRepresentableEditDescriptor(defaultValue, R.string.name))
+ }
+
+ override fun updateValue(value: Any?, row: RowRepresentable) {
+ realm.executeTransaction {
+ val newName = value as String? ?: ""
+ if (newName.isNotEmpty()) {
+ name = newName
+ }
+ }
+ }
}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersListActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersListActivity.kt
new file mode 100644
index 00000000..2dc2b16d
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersListActivity.kt
@@ -0,0 +1,58 @@
+package net.pokeranalytics.android.ui.activity
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import kotlinx.android.synthetic.main.activity_filters_list.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
+import net.pokeranalytics.android.ui.fragment.FiltersListFragment
+import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
+
+class FiltersListActivity : PokerAnalyticsActivity() {
+
+ enum class IntentKey(val keyName: String) {
+ DATA_TYPE("DATA_TYPE"),
+ LIVE_DATA_TYPE("LIVE_DATA_TYPE"),
+ ITEM_DELETED("ITEM_DELETED"),
+ SHOW_ADD_BUTTON("SHOW_ADD_BUTTON"),
+ }
+
+ companion object {
+ fun newInstance(context: Context, dataType: Int) {
+ context.startActivity(getIntent(context, dataType))
+ }
+
+ fun newSelectInstance(fragment: Fragment, dataType: Int, showAddButton: Boolean = true) {
+ val context = fragment.requireContext()
+ fragment.startActivityForResult(getIntent(context, dataType, showAddButton), FilterActivityRequestCode.SELECT_FILTER.ordinal)
+ }
+
+ private fun getIntent(context: Context, dataType: Int, showAddButton: Boolean = true): Intent {
+ val intent = Intent(context, FiltersListActivity::class.java)
+ intent.putExtra(IntentKey.DATA_TYPE.keyName, dataType)
+ intent.putExtra(IntentKey.SHOW_ADD_BUTTON.keyName, showAddButton)
+ return intent
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_filters_list)
+
+ initUI()
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+ val dataType = intent.getIntExtra(IntentKey.DATA_TYPE.keyName, 0)
+ val showAddButton = intent.getBooleanExtra(IntentKey.SHOW_ADD_BUTTON.keyName, true)
+ val fragment = filtersListFragment as FiltersListFragment
+ fragment.setData(dataType)
+ fragment.updateUI(showAddButton)
+ }
+
+}
\ No newline at end of file
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 68ee1388..67186d9d 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
@@ -11,7 +11,6 @@ import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm
import io.realm.RealmResults
-import io.realm.kotlin.isValid
import kotlinx.android.synthetic.main.fragment_data_list.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
@@ -25,7 +24,6 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.DeletableItemFragment
import net.pokeranalytics.android.ui.helpers.SwipeToDeleteCallback
-import net.pokeranalytics.android.ui.interfaces.FilterableType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.extensions.sorted
@@ -45,7 +43,7 @@ open class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataS
/**
* Set fragment data
*/
- fun setData(dataType: Int) {
+ open fun setData(dataType: Int) {
this.dataType = LiveData.values()[dataType]
this.identifiableClass = this.dataType.relatedEntity
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 eb36582f..3aeebf19 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
@@ -14,9 +14,9 @@ import kotlinx.android.synthetic.main.fragment_filters.view.toolbar
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.realm.Filter
-import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.activity.FilterDetailsActivity
import net.pokeranalytics.android.ui.activity.FiltersActivity
+import net.pokeranalytics.android.ui.activity.FiltersListActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
@@ -159,7 +159,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
moreFilters.setOnClickListener {
LiveData.FILTER.subType = filterableType.uniqueIdentifier
- DataListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false)
+ FiltersListActivity.newSelectInstance(this, LiveData.FILTER.ordinal, false)
}
mostUsedFiltersLayout.isVisible = showMostUsedFiltersLayout
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt
new file mode 100644
index 00000000..8c4abc81
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersListFragment.kt
@@ -0,0 +1,122 @@
+package net.pokeranalytics.android.ui.fragment
+
+import android.app.Activity
+import android.content.Context
+import android.content.Intent
+import io.realm.RealmResults
+import net.pokeranalytics.android.model.LiveData
+import net.pokeranalytics.android.model.interfaces.Deletable
+import net.pokeranalytics.android.model.interfaces.Identifiable
+import net.pokeranalytics.android.model.realm.Filter
+import net.pokeranalytics.android.ui.activity.EditableDataActivity
+import net.pokeranalytics.android.ui.activity.FiltersActivity
+import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment
+import net.pokeranalytics.android.ui.interfaces.FilterHandler.Companion.INTENT_FILTER_UPDATE_FILTER_UI
+import net.pokeranalytics.android.ui.view.RowRepresentable
+import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
+import net.pokeranalytics.android.ui.view.RowViewType
+import net.pokeranalytics.android.util.Preferences
+import timber.log.Timber
+
+
+open class FiltersListFragment : DataListFragment() {
+
+ private var identifiableClass: Class = Filter::class.java
+ private var dataType: LiveData = LiveData.FILTER
+ private lateinit var items: RealmResults
+
+ /**
+ * Set fragment data
+ */
+ override fun setData(dataType: Int) {
+ super.setData(dataType)
+
+ this.dataType = LiveData.FILTER
+ this.identifiableClass = Filter::class.java
+ setToolbarTitle(this.dataType.pluralLocalizedTitle(requireContext()))
+ this.items = this.retrieveItems(getRealm()) as RealmResults
+ }
+
+ override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
+ Timber.d("rowRepresentableForPosition: ${this.items[position] as RowRepresentable}")
+ return this.items[position] as RowRepresentable
+ }
+
+ override fun numberOfRows(): Int {
+ return this.items.size
+ }
+
+ override fun adapterRows(): List? {
+ return items
+ }
+
+ override fun viewTypeForPosition(position: Int): Int {
+ val viewType = (this.items[position] as RowRepresentable).viewType
+ return if (viewType != -1) viewType else RowViewType.DATA.ordinal
+ }
+
+ override fun editDescriptors(row: RowRepresentable): ArrayList? {
+ return when (row) {
+ is Filter -> row.editingDescriptors(mapOf("defaultValue" to row.name))
+ else -> super.editDescriptors(row)
+ }
+ }
+
+ override fun onRowValueChanged(value: Any?, row: RowRepresentable) {
+ when (row) {
+ is Filter -> {
+ row.updateValue(value, row)
+ dataListAdapter.refreshRow(row)
+ updateFilterUIIfNecessary(requireContext(), row.id)
+ }
+ else -> super.onRowValueChanged(value, row)
+ }
+ }
+
+ override fun onRowDeleted(row: RowRepresentable) {
+ when (row) {
+ is Filter -> {
+ val filterId = row.id
+ deleteItem(dataListAdapter, items, filterId)
+ if (filterId == Preferences.getActiveFilterId(requireContext())) {
+ Preferences.setActiveFilterId("", requireContext())
+ updateFilterUIIfNecessary(requireContext(), "")
+ }
+ }
+ else -> super.onRowDeleted(row)
+ }
+ }
+
+ override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
+ when (row) {
+ is Filter -> {
+ if (fromAction) {
+ val data = row.editingDescriptors(mapOf("defaultValue" to row.name))
+ BottomSheetFragment.create(fragmentManager, row, this, data, false, isDeletable = true, valueHasPlaceholder = false)
+ } else {
+ val intent = Intent()
+ intent.putExtra(FiltersActivity.IntentKey.FILTER_ID.keyName, row.id)
+ activity?.setResult(Activity.RESULT_OK, intent)
+ activity?.finish()
+ }
+ }
+ else -> {
+ val identifier = (row as Identifiable).id
+ EditableDataActivity.newInstanceForResult(this, this.dataType, identifier, REQUEST_CODE_DETAILS)
+ }
+ }
+ }
+
+ /**
+ * Update filter UI
+ */
+ fun updateFilterUIIfNecessary(context: Context, filterId: String) {
+ if (filterId == Preferences.getActiveFilterId(context)) {
+ // Send broadcast
+ val intent = Intent()
+ intent.action = INTENT_FILTER_UPDATE_FILTER_UI
+ context.sendBroadcast(intent)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt
index 74c8d6b8..320197f1 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt
@@ -42,7 +42,6 @@ class BottomSheetDoubleEditTextFragment : BottomSheetFragment() {
* Init data
*/
private fun initData() {
- valueHasPlaceholder = true
isEditingBlinds = row == SessionRow.BLINDS
}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt
index 537da59b..86a9a0c1 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt
@@ -43,7 +43,6 @@ class BottomSheetEditTextFragment : BottomSheetFragment() {
* Init data
*/
private fun initData() {
- valueHasPlaceholder = true
}
/**
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt
index 8c33bf13..8657df58 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt
@@ -48,7 +48,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
isClearable: Boolean? = true,
currentCurrency: Currency? = null,
isDeletable: Boolean? = false,
- valueHasPlaceholder: Boolean? = false
+ valueHasPlaceholder: Boolean? = null
): BottomSheetFragment {
val bottomSheetFragment = row.bottomSheetType.newInstance()
bottomSheetFragment.show(fragmentManager, "bottomSheet")
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt
index a5213f7b..90f4d45c 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetNumericTextFragment.kt
@@ -36,7 +36,6 @@ class BottomSheetNumericTextFragment : BottomSheetFragment() {
* Init data
*/
private fun initData() {
- valueHasPlaceholder = true
}
/**
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 64f687ba..15d45a77 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
@@ -12,69 +12,69 @@ import net.pokeranalytics.android.util.enumerations.IntIdentifiable
import net.pokeranalytics.android.util.enumerations.IntSearchable
enum class FilterActivityRequestCode {
- SELECT_FILTER,
- CREATE_FILTER,
- ;
+ SELECT_FILTER,
+ CREATE_FILTER,
+ ;
}
-enum class FilterableType(override var uniqueIdentifier: Int): IntIdentifiable {
- ALL(0),
- SESSION(1),
- TRANSACTION(2),
- BANKROLL(3),
- HAND_HISTORY(4),
- ;
+enum class FilterableType(override var uniqueIdentifier: Int) : IntIdentifiable {
+ ALL(0),
+ SESSION(1),
+ TRANSACTION(2),
+ BANKROLL(3),
+ HAND_HISTORY(4),
+ ;
- companion object : IntSearchable {
+ companion object : IntSearchable {
- override fun valuesInternal(): Array {
- return values()
- }
- }
+ override fun valuesInternal(): Array {
+ return values()
+ }
+ }
}
interface FilterHandler {
- companion object {
- const val INTENT_FILTER_UPDATE_FILTER_UI = "net.pokeranalytics.android.UPDATE_FILTER_UI"
- }
-
- fun applyFilter()
- fun removeFilter()
-
- fun saveFilter(context: Context, filterId:String) {
- Preferences.setActiveFilterId(filterId, context)
-
-
- val realm = Realm.getDefaultInstance()
- realm.beginTransaction()
- currentFilter(context, realm)?.let {
- it.useCount++
- }
- realm.commitTransaction()
- realm.close()
-
- // Send broadcast
- val intent = Intent()
- intent.action = INTENT_FILTER_UPDATE_FILTER_UI
- context.sendBroadcast(intent)
- }
-
- fun currentFilter(context: Context, realm: Realm): Filter? {
- return Preferences.getActiveFilterId(context)?.let {
- realm.where().equalTo("id", it).findFirst()
- } ?: run {
- null
- }
- }
-
- var currentFilterable: FilterableType
-
-
- /**
- * Manage filters
- */
- fun manageFilters(fragment: Fragment) {
- FiltersActivity.newInstanceForResult(fragment = fragment, currentFilterable = currentFilterable)
- }
+ companion object {
+ const val INTENT_FILTER_UPDATE_FILTER_UI = "net.pokeranalytics.android.UPDATE_FILTER_UI"
+ }
+
+ fun applyFilter()
+ fun removeFilter()
+
+ fun saveFilter(context: Context, filterId: String) {
+ Preferences.setActiveFilterId(filterId, context)
+
+
+ val realm = Realm.getDefaultInstance()
+ realm.beginTransaction()
+ currentFilter(context, realm)?.let {
+ it.useCount++
+ }
+ realm.commitTransaction()
+ realm.close()
+
+ // Send broadcast
+ val intent = Intent()
+ intent.action = INTENT_FILTER_UPDATE_FILTER_UI
+ context.sendBroadcast(intent)
+ }
+
+ fun currentFilter(context: Context, realm: Realm): Filter? {
+ return Preferences.getActiveFilterId(context)?.let {
+ realm.where().equalTo("id", it).findFirst()
+ } ?: run {
+ null
+ }
+ }
+
+ var currentFilterable: FilterableType
+
+
+ /**
+ * Manage filters
+ */
+ fun manageFilters(fragment: Fragment) {
+ FiltersActivity.newInstanceForResult(fragment = fragment, currentFilterable = currentFilterable)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_filters_list.xml b/app/src/main/res/layout/activity_filters_list.xml
new file mode 100644
index 00000000..8560f7e1
--- /dev/null
+++ b/app/src/main/res/layout/activity_filters_list.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file