Add a new query computed variable in Filter class which returns a Query objectdev
parent
5e70a799eb
commit
b8490a1207
@ -0,0 +1,72 @@ |
||||
package net.pokeranalytics.android.ui.interfaces |
||||
|
||||
import android.content.Context |
||||
import androidx.appcompat.app.AlertDialog |
||||
import androidx.fragment.app.Fragment |
||||
import io.realm.Realm |
||||
import io.realm.kotlin.where |
||||
import net.pokeranalytics.android.R |
||||
import net.pokeranalytics.android.model.realm.Filter |
||||
import net.pokeranalytics.android.ui.activity.FiltersActivity |
||||
import net.pokeranalytics.android.util.Preferences |
||||
import timber.log.Timber |
||||
|
||||
interface FilterHandler { |
||||
|
||||
fun createFilter() |
||||
fun applyFilter() |
||||
fun removeFilter() |
||||
|
||||
fun saveFilter(context: Context, filterId:String) { |
||||
Preferences.setActiveFilterId(filterId, context) |
||||
this.applyFilter() |
||||
} |
||||
|
||||
fun currentFilter(context: Context, realm: Realm): Filter? { |
||||
return Preferences.getActiveFilterId(context)?.let { |
||||
realm.where<Filter>().equalTo("id", it).findFirst() |
||||
} ?: run { |
||||
null |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Manage filters |
||||
*/ |
||||
fun manageFilters(fragment: Fragment) { |
||||
|
||||
val context = fragment.requireContext() |
||||
|
||||
val filterSelected = Preferences.getActiveFilterId(context) != null |
||||
|
||||
val choices = ArrayList<CharSequence>() |
||||
choices.add(fragment.getString(R.string.new_str)) |
||||
|
||||
if (filterSelected) { |
||||
choices.add(fragment.getString(R.string.modify_current_filter)) |
||||
choices.add(fragment.getString(R.string.load_from_db)) |
||||
choices.add(fragment.getString(R.string.remove_filter)) |
||||
} |
||||
|
||||
val builder = AlertDialog.Builder(context) |
||||
builder.setTitle(R.string.filter_selection) |
||||
.setCancelable(true) |
||||
.setItems(choices.toTypedArray()) { _, which -> |
||||
Timber.d("Click on $which") |
||||
when (which) { |
||||
0 -> FiltersActivity.newInstanceForResult(fragment = fragment, requestCode = 0) |
||||
1 -> FiltersActivity.newInstanceForResult(fragment = fragment, requestCode = 0) |
||||
2 -> FiltersActivity.newInstanceForResult(fragment = fragment, requestCode = 0) |
||||
3 -> { |
||||
Preferences.removeActiveFilterId(context) |
||||
removeFilter() |
||||
} |
||||
} |
||||
} |
||||
.setNegativeButton(R.string.cancel) { _, _ -> |
||||
Timber.d("Click on cancel") |
||||
} |
||||
|
||||
builder.show() |
||||
} |
||||
} |
||||
Loading…
Reference in new issue