@ -1,5 +1,6 @@
package net.pokeranalytics.android.ui.fragment
package net.pokeranalytics.android.ui.fragment
import android.app.Activity
import android.app.Activity.RESULT_OK
import android.app.Activity.RESULT_OK
import android.content.Intent
import android.content.Intent
import android.os.Bundle
import android.os.Bundle
@ -17,17 +18,19 @@ import io.realm.kotlin.where
import kotlinx.android.synthetic.main.fragment_feed.*
import kotlinx.android.synthetic.main.fragment_feed.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.interfaces.Editable
import net.pokeranalytics.android.model.interfaces.Editable
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.activity.*
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.NewDataMenuActivity
import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.FeedSessionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.FeedSessionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.FeedTransactionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.FeedTransactionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.fragment.components.RealmFragment
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode
import net.pokeranalytics.android.ui.interfaces.FilterHandler
import net.pokeranalytics.android.ui.interfaces.FilterableType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager
import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager
import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.Preferences
@ -35,7 +38,7 @@ import java.text.SimpleDateFormat
import java.util.*
import java.util.*
class FeedFragment : RealmFragment ( ) , RowRepresentableDelegate {
class FeedFragment : RealmFragment ( ) , RowRepresentableDelegate , FilterHandler {
companion object {
companion object {
@ -83,8 +86,13 @@ class FeedFragment : RealmFragment(), RowRepresentableDelegate {
if ( data . getBooleanExtra ( DataListActivity . IntentKey . ITEM _DELETED . keyName , false ) ) {
if ( data . getBooleanExtra ( DataListActivity . IntentKey . ITEM _DELETED . keyName , false ) ) {
deleteSelectedTransaction ( )
deleteSelectedTransaction ( )
}
}
}
} else if ( requestCode == FilterActivityRequestCode . SELECT _FILTER . ordinal && resultCode == Activity . RESULT _OK ) {
}
data ?. let {
this . saveFilter ( this . requireContext ( ) , it . getStringExtra ( FiltersActivity . IntentKey . FILTER _ID . keyName ) )
}
}
}
override fun onDestroyView ( ) {
override fun onDestroyView ( ) {
super . onDestroyView ( )
super . onDestroyView ( )
@ -149,18 +157,22 @@ class FeedFragment : RealmFragment(), RowRepresentableDelegate {
* /
* /
private fun initData ( ) {
private fun initData ( ) {
val sdf = SimpleDateFormat ( " dd/M/yyyy hh:mm " , Locale . getDefault ( ) )
val sdf = SimpleDateFormat ( " dd/M/yyyy hh:mm " , Locale . getDefault ( ) )
betaLimitDate = sdf . parse ( " 17/7/2019 10:00 " )
betaLimitDate = sdf . parse ( " 17/7/2019 10:00 " )
val filter : Filter ? = this . currentFilter ( this . requireContext ( ) , getRealm ( ) )
// Sessions
// Sessions
this . realmSessions = getRealm ( ) . where < Session > ( ) . findAll ( ) . sort ( " startDate " , Sort . DESCENDING )
this . realmSessions = filter ?. results ( ) ?: run { getRealm ( ) . where < Session > ( ) . findAll ( ) } . sort ( " startDate " , Sort . DESCENDING )
this . realmSessions . addChangeListener { _ , _ ->
this . realmSessions . addChangeListener { _ , _ ->
this . feedSessionAdapter . refreshData ( )
this . feedSessionAdapter . refreshData ( )
this . feedSessionAdapter . notifyDataSetChanged ( )
this . feedSessionAdapter . notifyDataSetChanged ( )
}
}
val pendingSessions = getRealm ( ) . where < Session > ( ) . isNull ( " year " ) . isNull ( " month " ) . findAll ( ) . sort ( " startDate " , Sort . DESCENDING )
val distinctDateSessions = getRealm ( ) . where < Session > ( ) . distinct ( " year " , " month " ) . findAll ( ) . sort ( " startDate " , Sort . DESCENDING )
val pendingSessions = filter ?. let { getRealm ( ) . where < Session > ( ) . alwaysFalse ( ) . findAll ( ) } ?: run { getRealm ( ) . where < Session > ( ) . isNull ( " year " ) . isNull ( " month " ) . findAll ( ) . sort ( " startDate " , Sort . DESCENDING ) }
val distinctDateSessions = filter ?. results ( " year " , " month " ) ?: run { getRealm ( ) . where < Session > ( ) . distinct ( " year " , " month " ) . findAll ( ) } . sort ( " startDate " , Sort . DESCENDING )
this . feedSessionAdapter = FeedSessionRowRepresentableAdapter ( this , realmSessions , pendingSessions , distinctDateSessions )
this . feedSessionAdapter = FeedSessionRowRepresentableAdapter ( this , realmSessions , pendingSessions , distinctDateSessions )
// Transactions
// Transactions
@ -233,4 +245,20 @@ class FeedFragment : RealmFragment(), RowRepresentableDelegate {
Toast . makeText ( context , " Beta has ended. Thanks a lot for your participation! Please update with the Google Play version to continue using the app " , Toast . LENGTH _LONG ) . show ( )
Toast . makeText ( context , " Beta has ended. Thanks a lot for your participation! Please update with the Google Play version to continue using the app " , Toast . LENGTH _LONG ) . show ( )
}
}
// Filter Handler
override fun createFilter ( ) {
TODO ( " not implemented " ) //To change body of created functions use File | Settings | File Templates.
}
override fun applyFilter ( ) {
initData ( )
}
override fun removeFilter ( ) {
initData ( )
}
override var currentFilterable : FilterableType = FilterableType . SESSION
}
}