|
|
|
@ -2,10 +2,6 @@ package net.pokeranalytics.android.ui.fragment |
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity.RESULT_OK |
|
|
|
import android.app.Activity.RESULT_OK |
|
|
|
import android.content.Intent |
|
|
|
import android.content.Intent |
|
|
|
import android.graphics.Bitmap |
|
|
|
|
|
|
|
import android.graphics.Canvas |
|
|
|
|
|
|
|
import android.graphics.Paint |
|
|
|
|
|
|
|
import android.graphics.Rect |
|
|
|
|
|
|
|
import android.os.Bundle |
|
|
|
import android.os.Bundle |
|
|
|
import android.view.* |
|
|
|
import android.view.* |
|
|
|
import android.widget.Toast |
|
|
|
import android.widget.Toast |
|
|
|
@ -25,12 +21,13 @@ import net.pokeranalytics.android.model.interfaces.Editable |
|
|
|
import net.pokeranalytics.android.model.realm.Filter |
|
|
|
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.model.realm.handhistory.HandHistory |
|
|
|
import net.pokeranalytics.android.ui.activity.* |
|
|
|
import net.pokeranalytics.android.ui.activity.* |
|
|
|
import net.pokeranalytics.android.ui.activity.components.RequestCode |
|
|
|
import net.pokeranalytics.android.ui.activity.components.RequestCode |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.adapter.FeedHandHistoryRowRepresentableAdapter |
|
|
|
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.extensions.toByteArray |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.fragment.components.FilterableFragment |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.FilterableFragment |
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode |
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterActivityRequestCode |
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterableType |
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterableType |
|
|
|
@ -39,8 +36,6 @@ import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager |
|
|
|
import net.pokeranalytics.android.util.Preferences |
|
|
|
import net.pokeranalytics.android.util.Preferences |
|
|
|
import net.pokeranalytics.android.util.billing.AppGuard |
|
|
|
import net.pokeranalytics.android.util.billing.AppGuard |
|
|
|
import net.pokeranalytics.android.util.extensions.count |
|
|
|
import net.pokeranalytics.android.util.extensions.count |
|
|
|
import net.pokeranalytics.android.util.video.MMediaMuxer |
|
|
|
|
|
|
|
import timber.log.Timber |
|
|
|
|
|
|
|
import java.text.SimpleDateFormat |
|
|
|
import java.text.SimpleDateFormat |
|
|
|
import java.util.* |
|
|
|
import java.util.* |
|
|
|
|
|
|
|
|
|
|
|
@ -48,7 +43,8 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
|
|
private enum class Tab { |
|
|
|
private enum class Tab { |
|
|
|
SESSIONS, |
|
|
|
SESSIONS, |
|
|
|
TRANSACTIONS |
|
|
|
TRANSACTIONS, |
|
|
|
|
|
|
|
HAND_HISTORY |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
companion object { |
|
|
|
companion object { |
|
|
|
@ -66,10 +62,12 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
|
|
private var currentTab = Tab.SESSIONS |
|
|
|
private var currentTab = Tab.SESSIONS |
|
|
|
|
|
|
|
|
|
|
|
private lateinit var feedSessionAdapter: FeedSessionRowRepresentableAdapter |
|
|
|
private lateinit var sessionAdapter: FeedSessionRowRepresentableAdapter |
|
|
|
private lateinit var feedTransactionAdapter: FeedTransactionRowRepresentableAdapter |
|
|
|
private lateinit var transactionAdapter: FeedTransactionRowRepresentableAdapter |
|
|
|
|
|
|
|
private lateinit var handHistoryAdapter: FeedHandHistoryRowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
private lateinit var realmTransactions: RealmResults<Transaction> |
|
|
|
private lateinit var realmTransactions: RealmResults<Transaction> |
|
|
|
|
|
|
|
private lateinit var realmHandHistories: RealmResults<HandHistory> |
|
|
|
private lateinit var betaLimitDate: Date |
|
|
|
private lateinit var betaLimitDate: Date |
|
|
|
|
|
|
|
|
|
|
|
private var newSessionCreated: Boolean = false |
|
|
|
private var newSessionCreated: Boolean = false |
|
|
|
@ -78,7 +76,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
private var selectedTransactionPosition: Int = -1 |
|
|
|
private var selectedTransactionPosition: Int = -1 |
|
|
|
|
|
|
|
|
|
|
|
override val observedEntities: List<Class<out RealmModel>> = |
|
|
|
override val observedEntities: List<Class<out RealmModel>> = |
|
|
|
listOf(Session::class.java, Transaction::class.java) |
|
|
|
listOf(Session::class.java, Transaction::class.java, HandHistory::class.java) |
|
|
|
|
|
|
|
|
|
|
|
override fun entitiesChanged( |
|
|
|
override fun entitiesChanged( |
|
|
|
clazz: Class<out RealmModel>, |
|
|
|
clazz: Class<out RealmModel>, |
|
|
|
@ -88,12 +86,16 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
|
|
when (clazz.kotlin) { |
|
|
|
when (clazz.kotlin) { |
|
|
|
Session::class -> { |
|
|
|
Session::class -> { |
|
|
|
this.feedSessionAdapter.refreshData() |
|
|
|
this.sessionAdapter.refreshData() |
|
|
|
this.feedSessionAdapter.notifyDataSetChanged() |
|
|
|
this.sessionAdapter.notifyDataSetChanged() |
|
|
|
} |
|
|
|
} |
|
|
|
Transaction::class -> { |
|
|
|
Transaction::class -> { |
|
|
|
this.feedTransactionAdapter.refreshData() |
|
|
|
this.transactionAdapter.refreshData() |
|
|
|
this.feedTransactionAdapter.notifyDataSetChanged() |
|
|
|
this.transactionAdapter.notifyDataSetChanged() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
HandHistory::class -> { |
|
|
|
|
|
|
|
this.handHistoryAdapter.refreshData() |
|
|
|
|
|
|
|
this.handHistoryAdapter.notifyDataSetChanged() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -133,7 +135,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
when (item?.itemId) { |
|
|
|
when (item?.itemId) { |
|
|
|
R.id.duplicate -> { |
|
|
|
R.id.duplicate -> { |
|
|
|
|
|
|
|
|
|
|
|
val sessionId = this.feedSessionAdapter.sessionIdForPosition(menuPosition) |
|
|
|
val sessionId = this.sessionAdapter.sessionIdForPosition(menuPosition) |
|
|
|
if (sessionId != null) { |
|
|
|
if (sessionId != null) { |
|
|
|
createNewSession(true, sessionId = sessionId, duplicate = true) |
|
|
|
createNewSession(true, sessionId = sessionId, duplicate = true) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
@ -204,6 +206,8 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
this.selectTab(Tab.TRANSACTIONS) |
|
|
|
this.selectTab(Tab.TRANSACTIONS) |
|
|
|
} else if (requestCode == RequestCode.NEW_SESSION.value && resultCode == RESULT_OK) { |
|
|
|
} else if (requestCode == RequestCode.NEW_SESSION.value && resultCode == RESULT_OK) { |
|
|
|
this.selectTab(Tab.SESSIONS) |
|
|
|
this.selectTab(Tab.SESSIONS) |
|
|
|
|
|
|
|
} else if (requestCode == RequestCode.NEW_HAND_HISTORY.value && resultCode == RESULT_OK) { |
|
|
|
|
|
|
|
this.selectTab(Tab.HAND_HISTORY) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@ -229,6 +233,9 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
RequestCode.FEED_TRANSACTION_DETAILS.value |
|
|
|
RequestCode.FEED_TRANSACTION_DETAILS.value |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
is HandHistory -> { |
|
|
|
|
|
|
|
HandHistoryActivity.newInstance(this, row.id) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -237,7 +244,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun initUI() { |
|
|
|
private fun initUI() { |
|
|
|
|
|
|
|
|
|
|
|
this.feedSessionAdapter = FeedSessionRowRepresentableAdapter(getRealm(), this) |
|
|
|
this.sessionAdapter = FeedSessionRowRepresentableAdapter(getRealm(), this) |
|
|
|
|
|
|
|
|
|
|
|
registerForContextMenu(this.menuRecyclerView) |
|
|
|
registerForContextMenu(this.menuRecyclerView) |
|
|
|
|
|
|
|
|
|
|
|
@ -287,6 +294,9 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
Tab.TRANSACTIONS.ordinal -> { |
|
|
|
Tab.TRANSACTIONS.ordinal -> { |
|
|
|
currentFilterable = FilterableType.TRANSACTION |
|
|
|
currentFilterable = FilterableType.TRANSACTION |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
Tab.HAND_HISTORY.ordinal -> { |
|
|
|
|
|
|
|
currentFilterable = FilterableType.HAND_HISTORY |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
tabChanged(tab.position) |
|
|
|
tabChanged(tab.position) |
|
|
|
} |
|
|
|
} |
|
|
|
@ -331,10 +341,10 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
|
|
when (filter?.filterableType) { |
|
|
|
when (filter?.filterableType) { |
|
|
|
FilterableType.SESSION -> { |
|
|
|
FilterableType.SESSION -> { |
|
|
|
this.feedSessionAdapter.filter = filter |
|
|
|
this.sessionAdapter.filter = filter |
|
|
|
} |
|
|
|
} |
|
|
|
else -> { |
|
|
|
else -> { |
|
|
|
this.feedSessionAdapter.filter = null |
|
|
|
this.sessionAdapter.filter = null |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -357,7 +367,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
getRealm().where<Transaction>().distinct("year", "month").findAll() |
|
|
|
getRealm().where<Transaction>().distinct("year", "month").findAll() |
|
|
|
} |
|
|
|
} |
|
|
|
distinctDateTransactions = distinctDateTransactions.sort("date", Sort.DESCENDING) |
|
|
|
distinctDateTransactions = distinctDateTransactions.sort("date", Sort.DESCENDING) |
|
|
|
this.feedTransactionAdapter = |
|
|
|
this.transactionAdapter = |
|
|
|
FeedTransactionRowRepresentableAdapter( |
|
|
|
FeedTransactionRowRepresentableAdapter( |
|
|
|
this, |
|
|
|
this, |
|
|
|
realmTransactions, |
|
|
|
realmTransactions, |
|
|
|
@ -366,6 +376,33 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun loadHandHistories(filter: Filter? = null) { |
|
|
|
|
|
|
|
val handHistoryFilter: Filter? = filter?.let { |
|
|
|
|
|
|
|
if (it.filterableType == FilterableType.HAND_HISTORY) { |
|
|
|
|
|
|
|
it |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
null |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Transactions |
|
|
|
|
|
|
|
this.realmHandHistories = |
|
|
|
|
|
|
|
handHistoryFilter?.results() ?: run { getRealm().where<HandHistory>().findAll() } |
|
|
|
|
|
|
|
this.realmHandHistories = this.realmHandHistories.sort("date", Sort.DESCENDING) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var distinctDates = handHistoryFilter?.results("year", "month") ?: run { |
|
|
|
|
|
|
|
getRealm().where<HandHistory>().distinct("year", "month").findAll() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
distinctDates = distinctDates.sort("date", Sort.DESCENDING) |
|
|
|
|
|
|
|
this.handHistoryAdapter = |
|
|
|
|
|
|
|
FeedHandHistoryRowRepresentableAdapter( |
|
|
|
|
|
|
|
this, |
|
|
|
|
|
|
|
realmHandHistories, |
|
|
|
|
|
|
|
distinctDates |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Create a new cash game |
|
|
|
* Create a new cash game |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -423,56 +460,52 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private fun createNewHandHistory() { |
|
|
|
private fun createNewHandHistory() { |
|
|
|
|
|
|
|
|
|
|
|
Timber.d("**** Start video test") |
|
|
|
HandHistoryActivity.newInstance(this) |
|
|
|
|
|
|
|
|
|
|
|
val width = 480 |
|
|
|
|
|
|
|
val height = 480 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// val testView = View(requireContext()) |
|
|
|
// Timber.d("**** Start video test") |
|
|
|
// testView.setBackgroundColor(requireContext().getColor(R.color.blue)) |
|
|
|
|
|
|
|
// testView.layoutParams = ViewGroup.LayoutParams(width, height) |
|
|
|
|
|
|
|
// |
|
|
|
// |
|
|
|
// val videoView = VideoView(requireContext()) |
|
|
|
// val width = 480 |
|
|
|
|
|
|
|
// val height = 480 |
|
|
|
val bitmap = Bitmap.createBitmap(480, 480, Bitmap.Config.ARGB_8888) |
|
|
|
// |
|
|
|
val canvas = Canvas(bitmap) |
|
|
|
// val bitmap = Bitmap.createBitmap(480, 480, Bitmap.Config.ARGB_8888) |
|
|
|
|
|
|
|
// val canvas = Canvas(bitmap) |
|
|
|
val paint = Paint() |
|
|
|
// |
|
|
|
paint.isAntiAlias = true |
|
|
|
// val paint = Paint() |
|
|
|
paint.style = Paint.Style.STROKE |
|
|
|
// paint.isAntiAlias = true |
|
|
|
paint.strokeWidth = 20.0.toFloat() |
|
|
|
// paint.style = Paint.Style.STROKE |
|
|
|
paint.color = requireContext().getColor(R.color.blue) |
|
|
|
// paint.strokeWidth = 20.0.toFloat() |
|
|
|
|
|
|
|
// paint.color = requireContext().getColor(R.color.blue) |
|
|
|
canvas.drawRect(Rect(0,0, width, height), paint) |
|
|
|
// |
|
|
|
|
|
|
|
// canvas.drawRect(Rect(0,0, width, height), paint) |
|
|
|
bitmap.let { |
|
|
|
// |
|
|
|
|
|
|
|
// bitmap.let { |
|
|
|
val muxer = MMediaMuxer() |
|
|
|
// |
|
|
|
|
|
|
|
// val muxer = MMediaMuxer() |
|
|
|
Timber.d("width = ${it.width}, height = ${it.height}") |
|
|
|
// |
|
|
|
|
|
|
|
// Timber.d("width = ${it.width}, height = ${it.height}") |
|
|
|
val width = (it.width / 2) * 2 |
|
|
|
// |
|
|
|
val height= (it.height / 2) * 2 |
|
|
|
// val width = (it.width / 2) * 2 |
|
|
|
|
|
|
|
// val height= (it.height / 2) * 2 |
|
|
|
muxer.Init(requireActivity(), width, height, "hhVideo", "YES!") |
|
|
|
// |
|
|
|
|
|
|
|
// muxer.Init(requireActivity(), width, height, "hhVideo", "YES!") |
|
|
|
Timber.d("**** Adds frames") |
|
|
|
// |
|
|
|
for (i in 0..50) { |
|
|
|
// Timber.d("**** Adds frames") |
|
|
|
|
|
|
|
// for (i in 0..50) { |
|
|
|
try { |
|
|
|
// |
|
|
|
val byteArray = it.toByteArray() |
|
|
|
// try { |
|
|
|
muxer.AddFrame(byteArray) |
|
|
|
// val byteArray = it.toByteArray() |
|
|
|
} catch (e: Exception) { |
|
|
|
// muxer.AddFrame(byteArray) |
|
|
|
Timber.e("error = ${e.message}") |
|
|
|
// } catch (e: Exception) { |
|
|
|
} |
|
|
|
// Timber.e("error = ${e.message}") |
|
|
|
} |
|
|
|
// } |
|
|
|
Timber.d("**** Create video") |
|
|
|
// } |
|
|
|
muxer.CreateVideo() |
|
|
|
// Timber.d("**** Create video") |
|
|
|
|
|
|
|
// muxer.CreateVideo() |
|
|
|
val path = muxer.GetPath() |
|
|
|
// |
|
|
|
Timber.d("**** Video path = $path") |
|
|
|
// val path = muxer.GetPath() |
|
|
|
} |
|
|
|
// Timber.d("**** Video path = $path") |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -506,6 +539,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
val filter: Filter? = this.currentFilter(this.requireContext(), getRealm()) |
|
|
|
val filter: Filter? = this.currentFilter(this.requireContext(), getRealm()) |
|
|
|
this.loadSessions(filter) |
|
|
|
this.loadSessions(filter) |
|
|
|
this.loadTransactions(filter) |
|
|
|
this.loadTransactions(filter) |
|
|
|
|
|
|
|
this.loadHandHistories(filter) |
|
|
|
|
|
|
|
|
|
|
|
filter?.let { |
|
|
|
filter?.let { |
|
|
|
when (it.filterableType) { |
|
|
|
when (it.filterableType) { |
|
|
|
@ -531,6 +565,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
super.removeFilter() |
|
|
|
super.removeFilter() |
|
|
|
this.loadSessions() |
|
|
|
this.loadSessions() |
|
|
|
this.loadTransactions() |
|
|
|
this.loadTransactions() |
|
|
|
|
|
|
|
this.loadHandHistories() |
|
|
|
this.setAdapter() |
|
|
|
this.setAdapter() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -547,8 +582,8 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
|
|
private fun setAdapter() { |
|
|
|
private fun setAdapter() { |
|
|
|
when (this.currentTab) { |
|
|
|
when (this.currentTab) { |
|
|
|
Tab.SESSIONS -> menuRecyclerView.adapter = feedSessionAdapter |
|
|
|
Tab.SESSIONS -> menuRecyclerView.adapter = sessionAdapter |
|
|
|
Tab.TRANSACTIONS -> menuRecyclerView.adapter = feedTransactionAdapter |
|
|
|
Tab.TRANSACTIONS -> menuRecyclerView.adapter = transactionAdapter |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|