Merge branch 'dev' of gitlab.com:stax-river/poker-analytics into dev

dev
Laurent 7 years ago
commit 31822bb410
  1. 7
      app/src/main/java/net/pokeranalytics/android/model/LiveData.kt
  2. 16
      app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
  3. 14
      app/src/main/java/net/pokeranalytics/android/ui/activity/DataListActivity.kt
  4. 20
      app/src/main/java/net/pokeranalytics/android/ui/activity/FiltersActivity.kt
  5. 22
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  6. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  7. 3
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  8. 25
      app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt

@ -22,10 +22,11 @@ enum class LiveData : Localizable {
TOURNAMENT_NAME,
TOURNAMENT_FEATURE,
TRANSACTION,
TRANSACTION_TYPE;
TRANSACTION_TYPE,
FILTER;
fun items(realm: Realm, fieldName: String? = null, sortOrder: Sort? = null): RealmResults<*> {
var results = realm.where(this.relatedEntity).findAll().sort(fieldName ?: this.sortingFieldName, sortOrder ?: this.sorting)
val results = realm.where(this.relatedEntity).findAll().sort(fieldName ?: this.sortingFieldName, sortOrder ?: this.sorting)
if (results.size > 0) {
if (results.first() is CountableUsage) {
@ -101,6 +102,7 @@ enum class LiveData : Localizable {
TOURNAMENT_FEATURE -> TournamentFeature::class.java
TRANSACTION -> Transaction::class.java
TRANSACTION_TYPE -> TransactionType::class.java
FILTER -> Filter::class.java
}
}
@ -142,6 +144,7 @@ enum class LiveData : Localizable {
TOURNAMENT_FEATURE -> R.string.tournament_feature
TRANSACTION -> R.string.operations
TRANSACTION_TYPE -> R.string.operation_types
FILTER -> R.string.filter
}
}

@ -3,10 +3,20 @@ package net.pokeranalytics.android.model.realm
import io.realm.*
import io.realm.annotations.PrimaryKey
import io.realm.kotlin.where
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.interfaces.CountableUsage
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.interfaces.SaveValidityStatus
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow
import net.pokeranalytics.android.ui.view.rowrepresentable.GameRow
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.util.NULL_TEXT
import timber.log.Timber
import java.util.*
@ -15,7 +25,7 @@ import java.util.*
* It contains a list of [FilterCondition] describing the complete query to launch
* The [Filter] is working closely with a [Filterable] interface providing the entity we want the query being launched on
*/
open class Filter : RealmObject() {
open class Filter : RealmObject(), RowRepresentable {
companion object {
@ -139,4 +149,8 @@ open class Filter : RealmObject() {
}
override fun getDisplayName(): String {
if (name.isNotEmpty()) return name
return this.query.name
}
}

@ -3,23 +3,35 @@ 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_data_list.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.DataListFragment
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
class DataListActivity : PokerAnalyticsActivity() {
enum class IntentKey(val keyName: String) {
DATA_TYPE("DATA_TYPE"),
LIVE_DATA_TYPE("LIVE_DATA_TYPE"),
ITEM_DELETED("ITEM_DELETED")
}
companion object {
fun newInstance(context: Context, dataType: Int) {
context.startActivity(getIntent(context, dataType))
}
fun newSelectInstance(fragment: Fragment, dataType: Int) {
val context = fragment.requireContext()
fragment.startActivityForResult(getIntent(context, dataType), FilterActivityRequestCode.SELECT_FILTER.ordinal)
}
private fun getIntent(context:Context, dataType:Int) : Intent {
val intent = Intent(context, DataListActivity::class.java)
intent.putExtra(IntentKey.DATA_TYPE.keyName, dataType)
context.startActivity(intent)
return intent
}
}

@ -7,6 +7,7 @@ import androidx.fragment.app.Fragment
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.FiltersFragment
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
class FiltersActivity : PokerAnalyticsActivity() {
@ -21,19 +22,22 @@ class FiltersActivity : PokerAnalyticsActivity() {
* Default constructor
*/
fun newInstance(context: Context, filterId: String? = null) {
val intent = Intent(context, FiltersActivity::class.java)
filterId?.let {
intent.putExtra(IntentKey.FILTER_ID.keyName, it)
}
context.startActivity(intent)
context.startActivity(getIntent(context, filterId))
}
/**
* Create a new instance for result
*/
fun newInstanceForResult(fragment: Fragment, requestCode: Int) {
val intent = Intent(fragment.requireContext(), FiltersActivity::class.java)
fragment.startActivityForResult(intent, requestCode)
fun newInstanceForResult(fragment: Fragment, filterId: String? = null) {
fragment.startActivityForResult(getIntent(fragment.requireContext(), filterId), FilterActivityRequestCode.SELECT_FILTER.ordinal)
}
private fun getIntent(context:Context, filterId:String?) : Intent {
val intent = Intent(context, FiltersActivity::class.java)
filterId?.let {
intent.putExtra(IntentKey.FILTER_ID.keyName, it)
}
return intent
}
}

@ -18,10 +18,13 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import net.pokeranalytics.android.R
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.DataListActivity
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
@ -30,8 +33,6 @@ import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.helpers.SwipeToDeleteCallback
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow
class DataListFragment : RealmFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate {
@ -39,7 +40,7 @@ class DataListFragment : RealmFragment(), LiveRowRepresentableDataSource, RowRep
const val REQUEST_CODE_DETAILS = 1000
}
private lateinit var dataType: SettingRow
private lateinit var dataType: LiveData
private lateinit var items: RealmResults<*>
private lateinit var dataListAdapter: RowRepresentableAdapter
@ -93,7 +94,13 @@ class DataListFragment : RealmFragment(), LiveRowRepresentableDataSource, RowRep
}
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
this.dataType.relatedResultsRepresentable?.let {
this.dataType?.let {
if (it == LiveData.FILTER) {
val intent = Intent()
intent.putExtra(FiltersActivity.IntentKey.FILTER_ID.keyName, (row as Filter).id)
activity?.setResult(Activity.RESULT_OK, intent)
activity?.finish()
} else {
lastItemClickedPosition = position
EditableDataActivity.newInstanceForResult(
this,
@ -103,6 +110,7 @@ class DataListFragment : RealmFragment(), LiveRowRepresentableDataSource, RowRep
)
}
}
}
/**
* Init UI
@ -135,7 +143,7 @@ class DataListFragment : RealmFragment(), LiveRowRepresentableDataSource, RowRep
}
this.addButton.setOnClickListener {
this.dataType.relatedResultsRepresentable?.let {
this.dataType?.let {
EditableDataActivity.newInstance(
requireContext(),
dataType = it.ordinal,
@ -199,9 +207,9 @@ class DataListFragment : RealmFragment(), LiveRowRepresentableDataSource, RowRep
* Set fragment data
*/
fun setData(dataType: Int) {
this.dataType = SettingRow.values()[dataType]
this.dataType = LiveData.values()[dataType]
this.toolbar.title = this.dataType.localizedTitle(requireContext())
this.dataType.relatedResultsRepresentable?.let {
this.dataType?.let {
this.items = it.items(getRealm())
}
}

@ -124,7 +124,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta
}
row.relatedResultsRepresentable?.let {
DataListActivity.newInstance(requireContext(), (row as SettingRow).ordinal)
DataListActivity.newInstance(requireContext(), it.ordinal)
}
}

@ -23,6 +23,7 @@ import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.activity.FiltersActivity
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
import net.pokeranalytics.android.ui.interfaces.FilterHandler
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
@ -83,7 +84,7 @@ class StatisticsFragment : TableReportFragment(), FilterHandler {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 0 && resultCode == Activity.RESULT_OK) {
if (requestCode == FilterActivityRequestCode.SELECT_FILTER.ordinal && resultCode == Activity.RESULT_OK) {
data?.let {
this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName))
}

@ -6,11 +6,19 @@ import androidx.fragment.app.Fragment
import io.realm.Realm
import io.realm.kotlin.where
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.FiltersActivity
import net.pokeranalytics.android.util.Preferences
import timber.log.Timber
enum class FilterActivityRequestCode {
SELECT_FILTER,
CREATE_FILTER,
;
}
interface FilterHandler {
fun createFilter()
@ -36,15 +44,22 @@ interface FilterHandler {
fun manageFilters(fragment: Fragment) {
val context = fragment.requireContext()
val filterId = Preferences.getActiveFilterId(context)
val filterSelected = filterId != null
val filterSelected = Preferences.getActiveFilterId(context) != null
val realm = Realm.getDefaultInstance()
val count = realm.where<Filter>().count().toInt()
realm.close()
val choices = ArrayList<CharSequence>()
choices.add(fragment.getString(R.string.new_str))
if (count > 0) {
choices.add(fragment.getString(R.string.load_from_db))
}
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))
}
@ -54,9 +69,9 @@ interface FilterHandler {
.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)
0 -> FiltersActivity.newInstanceForResult(fragment = fragment)
1 -> DataListActivity.newSelectInstance(fragment, LiveData.FILTER.ordinal)
2 -> FiltersActivity.newInstanceForResult(fragment = fragment, filterId = filterId)
3 -> {
Preferences.removeActiveFilterId(context)
removeFilter()

Loading…
Cancel
Save