diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt index 7d0e195c..a0b1479f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt @@ -13,7 +13,6 @@ import net.pokeranalytics.android.calculus.bankroll.BankrollReport import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -38,7 +37,6 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable } } - private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var bankrollAdapter: RowRepresentableAdapter private lateinit var bankrollReport: BankrollReport @@ -129,14 +127,8 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity + setDisplayHomeAsUpEnabled(true) - // Avoid a bug during setting the titleResId - toolbar.title = "" - - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) updateMenuUI() bankrollAdapter = RowRepresentableAdapter(this, this) @@ -154,13 +146,12 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable * Update menu UI */ private fun updateMenuUI() { + if (bankrollReport.setup.virtualBankroll) { - toolbar.title = getString(R.string.total) - collapsingToolbar.title = getString(R.string.total) + setToolbarTitle(getString(R.string.total)) bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = false } else { - toolbar.title = bankrollReport.setup.bankroll?.name - collapsingToolbar.title = bankrollReport.setup.bankroll?.name + setToolbarTitle(bankrollReport.setup.bankroll?.name) bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = true } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt index 6ca073e9..26a9d1a6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt @@ -28,7 +28,6 @@ import net.pokeranalytics.android.ui.activity.BankrollDetailsActivity import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.GraphActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -59,7 +58,6 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour } } - private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var bankrollAdapter: RowRepresentableAdapter private var rows: ArrayList = ArrayList() @@ -179,11 +177,7 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + setDisplayHomeAsUpEnabled(true) bankrollAdapter = RowRepresentableAdapter(this, this) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt index 62b9ff3f..5512aa35 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt @@ -21,7 +21,6 @@ import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.ui.activity.ProgressReportActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -44,7 +43,6 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable } } - private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var statsAdapter: RowRepresentableAdapter private var title: String? = "" @@ -80,14 +78,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - - // Avoid a bug during setting the titleResId - toolbar.title = "" - - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + setDisplayHomeAsUpEnabled(true) var tabIndexToSelect = 0 sessionTypeCondition?.let { @@ -134,11 +125,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable * Display data */ private fun displayData() { - - title?.let { - toolbar.title = it - } - + setToolbarTitle(title) } // StaticRowRepresentableDataSource diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt index 5ae08654..629129bb 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ComparisonChartFragment.kt @@ -6,7 +6,6 @@ import kotlinx.android.synthetic.main.fragment_comparison_chart.* import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.BankrollActivity import net.pokeranalytics.android.ui.activity.SettingsActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.ComparisonChartPagerAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -37,7 +36,6 @@ class ComparisonChartFragment : PokerAnalyticsFragment(), StaticRowRepresentable } - private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var viewPagerAdapter: ComparisonChartPagerAdapter private var comparisonChartMenu: Menu? = null @@ -94,21 +92,17 @@ class ComparisonChartFragment : PokerAnalyticsFragment(), StaticRowRepresentable */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity + setDisplayHomeAsUpEnabled(true) - toolbar.title = "" + //TODO: Localize title + setToolbarTitle("Comparison chart") - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - - toolbar.title = "Comparison chart" - - viewPagerAdapter = ComparisonChartPagerAdapter(requireContext(), parentActivity.supportFragmentManager) - viewPager.adapter = viewPagerAdapter - viewPager.offscreenPageLimit = 2 - - tabs.setupWithViewPager(viewPager) + parentActivity?.let { + viewPagerAdapter = ComparisonChartPagerAdapter(requireContext(), it.supportFragmentManager) + viewPager.adapter = viewPagerAdapter + viewPager.offscreenPageLimit = 2 + tabs.setupWithViewPager(viewPager) + } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt index 9f0e6ede..2fa0c3a7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt @@ -10,7 +10,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_data_list.* import net.pokeranalytics.android.R -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -22,114 +21,108 @@ import java.util.* class CurrenciesFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { - companion object { - - const val INTENT_CURRENCY_CODE = "INTENT_CURRENCY_CODE" - - val rowRepresentation : List by lazy { - val rows = ArrayList() - rows.addAll(mostUsedCurrencies) - rows.add(SeparatorRow()) - rows.addAll(availableCurrencies) - rows - } - - private val mostUsedCurrencyCodes = arrayListOf("EUR", "USD", "CAD", "GBP", "AUD", "CNY") - private val systemCurrencies = Currency.getAvailableCurrencies() - - private val mostUsedCurrencies = this.mostUsedCurrencyCodes.map { code -> - CurrencyRow( - this.systemCurrencies.filter { - it.currencyCode == code - }.first() - ) - } - - private val availableCurrencies = this.systemCurrencies.filter { - !mostUsedCurrencyCodes.contains(it.currencyCode) - }.filter { - Locale.getAvailableLocales().filter {locale -> - try { - Currency.getInstance(locale).currencyCode == it.currencyCode - } catch (e: Exception) { - false - } - }.isNotEmpty() - }.sortedBy { - it.displayName - }.map { - CurrencyRow(it) - } - } - - private class CurrencyRow(var currency:Currency) : RowRepresentable { - - override fun getDisplayName(context: Context): String { - return currency.getDisplayName(Locale.getDefault()).capitalize() - } - - var currencyCode: String = currency.currencyCode - var currencySymbole: String = currency.getSymbol(Locale.getDefault()) - var currencyCodeAndSymbol: String = "${this.currencyCode} (${this.currencySymbole})" - - override val viewType: Int = RowViewType.TITLE_VALUE.ordinal - } - - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_currencies, container, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initData() - initUI() - } - - - // StaticRowRepresentableDataSource - - override fun adapterRows(): List? { - return CurrenciesFragment.rowRepresentation - - } - - override fun stringForRow(row: RowRepresentable): String { - return (row as CurrencyRow).currencyCodeAndSymbol - } - - // RowRepresentableDelegate - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - val intent = Intent() - intent.putExtra(INTENT_CURRENCY_CODE, (row as CurrencyRow).currency.currencyCode) - this.activity?.setResult(Activity.RESULT_OK, intent) - this.activity?.finish() - } - - private fun initData() { - } - - /** - * Init UI - */ - private fun initUI() { - - val activity = activity as PokerAnalyticsActivity - - // Avoid a bug during setting the titleResId - toolbar.title = this.getString( R.string.currency) - - activity.setSupportActionBar(toolbar) - activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - - val viewManager = LinearLayoutManager(requireContext()) - val dataListAdapter = RowRepresentableAdapter(this, this) - - recyclerView.apply { - setHasFixedSize(true) - layoutManager = viewManager - adapter = dataListAdapter - } - } + companion object { + + const val INTENT_CURRENCY_CODE = "INTENT_CURRENCY_CODE" + + val rowRepresentation: List by lazy { + val rows = ArrayList() + rows.addAll(mostUsedCurrencies) + rows.add(SeparatorRow()) + rows.addAll(availableCurrencies) + rows + } + + private val mostUsedCurrencyCodes = arrayListOf("EUR", "USD", "CAD", "GBP", "AUD", "CNY") + private val systemCurrencies = Currency.getAvailableCurrencies() + + private val mostUsedCurrencies = this.mostUsedCurrencyCodes.map { code -> + CurrencyRow( + this.systemCurrencies.filter { + it.currencyCode == code + }.first() + ) + } + + private val availableCurrencies = this.systemCurrencies.filter { + !mostUsedCurrencyCodes.contains(it.currencyCode) + }.filter { + Locale.getAvailableLocales().filter { locale -> + try { + Currency.getInstance(locale).currencyCode == it.currencyCode + } catch (e: Exception) { + false + } + }.isNotEmpty() + }.sortedBy { + it.displayName + }.map { + CurrencyRow(it) + } + } + + private class CurrencyRow(var currency: Currency) : RowRepresentable { + + override fun getDisplayName(context: Context): String { + return currency.getDisplayName(Locale.getDefault()).capitalize() + } + + var currencyCode: String = currency.currencyCode + var currencySymbole: String = currency.getSymbol(Locale.getDefault()) + var currencyCodeAndSymbol: String = "${this.currencyCode} (${this.currencySymbole})" + + override val viewType: Int = RowViewType.TITLE_VALUE.ordinal + } + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_currencies, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + + // StaticRowRepresentableDataSource + + override fun adapterRows(): List? { + return CurrenciesFragment.rowRepresentation + + } + + override fun stringForRow(row: RowRepresentable): String { + return (row as CurrencyRow).currencyCodeAndSymbol + } + + // RowRepresentableDelegate + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + val intent = Intent() + intent.putExtra(INTENT_CURRENCY_CODE, (row as CurrencyRow).currency.currencyCode) + this.activity?.setResult(Activity.RESULT_OK, intent) + this.activity?.finish() + } + + private fun initData() { + } + + /** + * Init UI + */ + private fun initUI() { + + setDisplayHomeAsUpEnabled(true) + setToolbarTitle(getString(R.string.currency)) + + val viewManager = LinearLayoutManager(requireContext()) + val dataListAdapter = RowRepresentableAdapter(this, this) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = dataListAdapter + } + } } \ 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 4c537216..4854459b 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 @@ -21,7 +21,6 @@ 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 import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -46,8 +45,8 @@ class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataSource */ fun setData(dataType: Int) { this.dataType = LiveData.values()[dataType] - this.toolbar.title = this.dataType.localizedTitle(requireContext()) - this.dataType?.let { + setToolbarTitle(this.dataType.localizedTitle(requireContext())) + this.dataType.let { this.items = it.items(getRealm()) } } @@ -68,14 +67,7 @@ class DataListFragment : DeletableItemFragment(), LiveRowRepresentableDataSource */ private fun initUI() { - val activity = activity as PokerAnalyticsActivity - - // Avoid a bug during setting the titleResId - toolbar.title = "" - - activity.setSupportActionBar(toolbar) - activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + setDisplayHomeAsUpEnabled(true) val viewManager = LinearLayoutManager(requireContext()) dataListAdapter = RowRepresentableAdapter(this, this) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt index 19420e68..1cd27365 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt @@ -28,7 +28,6 @@ import net.pokeranalytics.android.ui.adapter.FeedTransactionRowRepresentableAdap import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate 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.SmoothScrollLinearLayoutManager @@ -37,7 +36,7 @@ import java.text.SimpleDateFormat import java.util.* -class FeedFragment : RealmFragment(), RowRepresentableDelegate, FilterHandler { +class FeedFragment : RealmFragment(), RowRepresentableDelegate { companion object { @@ -69,6 +68,7 @@ class FeedFragment : RealmFragment(), RowRepresentableDelegate, FilterHandler { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setFilterable(true) initUI() initData() } @@ -162,7 +162,6 @@ class FeedFragment : RealmFragment(), RowRepresentableDelegate, FilterHandler { */ private fun initData() { - val sdf = SimpleDateFormat("dd/M/yyyy hh:mm", Locale.getDefault()) betaLimitDate = sdf.parse("17/7/2019 10:00") diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt index bb3adb40..b5cff020 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -14,7 +14,6 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.ui.activity.FilterDetailsActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -36,7 +35,6 @@ import kotlin.collections.ArrayList open class FilterDetailsFragment : RealmFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { - lateinit var parentActivity: PokerAnalyticsActivity lateinit var rowRepresentableAdapter: RowRepresentableAdapter private lateinit var primaryKey: String private lateinit var filterCategoryRow: FilterCategoryRow @@ -155,10 +153,8 @@ open class FilterDetailsFragment : RealmFragment(), StaticRowRepresentableDataS * Init UI */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + + setDisplayHomeAsUpEnabled(true) this.appBar.toolbar.title = getString(R.string.filter) 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 31741212..8b27a6fd 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 @@ -13,7 +13,6 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.ui.activity.FilterDetailsActivity import net.pokeranalytics.android.ui.activity.FiltersActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -30,7 +29,6 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, const val REQUEST_CODE_FILTER_DETAILS = 100 } - private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var rowRepresentableAdapter: RowRepresentableAdapter private var currentFilter: Filter? = null @@ -127,10 +125,8 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, * Init UI */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + + setDisplayHomeAsUpEnabled(true) this.appBar.toolbar.title = getString(R.string.filter) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt index 31821a0b..72f7a605 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/GraphFragment.kt @@ -14,7 +14,6 @@ import com.github.mikephil.charting.listener.OnChartValueSelectedListener import kotlinx.android.synthetic.main.fragment_graph.* import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Stat -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.ui.graph.AxisFormatting import net.pokeranalytics.android.ui.graph.GraphUnderlyingEntry @@ -49,8 +48,6 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener { } - private lateinit var parentActivity: PokerAnalyticsActivity - private var style: Style = Style.LINE private lateinit var legendView: LegendView @@ -101,8 +98,6 @@ class GraphFragment : RealmFragment(), OnChartValueSelectedListener { */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - this.legendView = when (this.style) { Style.MULTILINE -> MultiLineLegendView(requireContext()) else -> LegendView(requireContext()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index f6aaa248..0cd9ffba 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -19,7 +19,6 @@ import net.pokeranalytics.android.model.realm.Location import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.utils.FavoriteSessionFinder import net.pokeranalytics.android.ui.activity.EditableDataActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.fragment.components.RealmFragment @@ -41,7 +40,6 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { const val REQUEST_CODE_NEW_CUSTOM_FIELD = 1000 } - private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var currentSession: Session private lateinit var sessionAdapter: RowRepresentableAdapter @@ -150,14 +148,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - - // Avoid a bug during setting the titleResId - toolbar.title = "" - - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + setDisplayHomeAsUpEnabled(true) val viewManager = SmoothScrollLinearLayoutManager(requireContext()) recyclerView.apply { @@ -334,7 +325,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { realm.commitTransaction() // Find the nearest location around the user - parentActivity.findNearestLocation { + parentActivity?.findNearestLocation { it?.let { location -> realm.beginTransaction() val realmLocation = realm.where().equalTo("id", location.id).findFirst() @@ -348,9 +339,8 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { sessionHasBeenCustomized = false } - - toolbar.title = - if (currentSession.isTournament()) getString(R.string.tournament) else getString(R.string.cash_game) + toolbar.title = if (currentSession.isTournament()) getString(R.string.tournament) else getString(R.string.cash_game) + collapsingToolbar.title = toolbar.title sessionAdapter = RowRepresentableAdapter(currentSession, this) recyclerView.adapter = sessionAdapter diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 98e205a1..c238131c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -16,7 +16,6 @@ import net.pokeranalytics.android.ui.activity.BillingActivity import net.pokeranalytics.android.ui.activity.CurrenciesActivity import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.GDPRActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource @@ -58,7 +57,6 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta } private lateinit var settingsAdapterRow: RowRepresentableAdapter - private lateinit var parentActivity: PokerAnalyticsActivity override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_settings, container, false) @@ -106,20 +104,20 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta BillingActivity.newInstance(requireContext()) } } - SettingRow.RATE_APP -> parentActivity.openPlayStorePage() - SettingRow.CONTACT_US -> parentActivity.openContactMail(R.string.contact) - SettingRow.BUG_REPORT -> parentActivity.openContactMail(R.string.bug_report_subject, Realm.getDefaultInstance().path) + SettingRow.RATE_APP -> parentActivity?.openPlayStorePage() + SettingRow.CONTACT_US -> parentActivity?.openContactMail(R.string.contact) + SettingRow.BUG_REPORT -> parentActivity?.openContactMail(R.string.bug_report_subject, Realm.getDefaultInstance().path) SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, REQUEST_CODE_CURRENCY) SettingRow.FOLLOW_US -> { when (position) { - 0 -> parentActivity.openUrl(URL.BLOG.value) - 1 -> parentActivity.openUrl(URL.INSTAGRAM.value) - 2 -> parentActivity.openUrl(URL.TWITTER.value) - 3 -> parentActivity.openUrl(URL.FACEBOOK.value) + 0 -> parentActivity?.openUrl(URL.BLOG.value) + 1 -> parentActivity?.openUrl(URL.INSTAGRAM.value) + 2 -> parentActivity?.openUrl(URL.TWITTER.value) + 3 -> parentActivity?.openUrl(URL.FACEBOOK.value) } } - SettingRow.PRIVACY_POLICY -> parentActivity.openUrl(URL.PRIVACY_POLICY.value) - SettingRow.TERMS_OF_USE -> parentActivity.openUrl(URL.TERMS.value) + SettingRow.PRIVACY_POLICY -> parentActivity?.openUrl(URL.PRIVACY_POLICY.value) + SettingRow.TERMS_OF_USE -> parentActivity?.openUrl(URL.TERMS.value) SettingRow.GDPR -> openGDPRActivity() } @@ -133,11 +131,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) + setDisplayHomeAsUpEnabled(true) val viewManager = LinearLayoutManager(requireContext()) settingsAdapterRow = RowRepresentableAdapter( diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt index ca28348e..7cbc1f29 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt @@ -58,6 +58,7 @@ class StatisticsFragment : ResultsObserverFragment(), FilterHandler { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setFilterable(true) initUI() launchStatComputation() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt new file mode 100644 index 00000000..8879865c --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt @@ -0,0 +1,72 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.* +import androidx.appcompat.widget.Toolbar +import androidx.fragment.app.Fragment +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.interfaces.FilterHandler +import net.pokeranalytics.android.ui.interfaces.FilterableType +import timber.log.Timber + +/** + * A class which define the fragment as Filterable + * - Add an filter icon menu + * - Access to the filters actions (new, select, modify, remove) + * - ... + */ +open class FilterableFragment: Fragment(), FilterHandler { + + override var currentFilterable: FilterableType = FilterableType.ALL + + private var filterMenuItem: MenuItem? = null + private var displayFilter: Boolean = false + set(value) { + field = value + filterMenuItem?.isVisible = displayFilter + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + setHasOptionsMenu(true) + return super.onCreateView(inflater, container, savedInstanceState) + } + + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + super.onCreateOptionsMenu(menu, inflater) + Timber.d("onCreateOptionsMenu") + + view?.findViewById(R.id.toolbar)?.let { toolbar -> + Timber.d("toolbar menu ${toolbar.menu}") + toolbar.menu.removeItem(R.id.menu_item_filter) + filterMenuItem = toolbar.menu?.add(0, R.id.menu_item_filter, 0, R.string.filter) + filterMenuItem?.setIcon(R.drawable.ic_outline_filter_list) + filterMenuItem?.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM) + filterMenuItem?.isVisible = displayFilter + } + } + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + when(item?.itemId) { + R.id.menu_item_filter -> { + manageFilters(this) + } + } + return super.onOptionsItemSelected(item) + } + + override fun createFilter() { + } + + override fun applyFilter() { + } + + override fun removeFilter() { + } + + /** + * Set the current fragment as filterable + */ + fun setFilterable(filterable: Boolean) { + this.displayFilter = filterable + } +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/PokerAnalyticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/PokerAnalyticsFragment.kt index 1c63071d..70ff698a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/PokerAnalyticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/PokerAnalyticsFragment.kt @@ -1,18 +1,28 @@ package net.pokeranalytics.android.ui.fragment.components import android.os.Bundle -import androidx.fragment.app.Fragment +import android.view.View +import androidx.appcompat.widget.Toolbar import com.crashlytics.android.Crashlytics +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity +import net.pokeranalytics.android.ui.interfaces.FilterHandler -open class PokerAnalyticsFragment: Fragment() { +open class PokerAnalyticsFragment : FilterableFragment(), FilterHandler { private var loaderDialogFragment: LoaderDialogFragment? = null + var parentActivity: PokerAnalyticsActivity? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Crashlytics.log("$this.localClassName onCreate") } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initUI() + } + override fun onResume() { super.onResume() Crashlytics.log("$this.localClassName onResume") @@ -33,6 +43,22 @@ open class PokerAnalyticsFragment: Fragment() { */ open fun onBackPressed() {} + /** + * Init UI + */ + private fun initUI() { + + setHasOptionsMenu(true) + + parentActivity = activity as PokerAnalyticsActivity + + // Set the toolbar to the parent activity + + view?.findViewById(R.id.toolbar)?.let { toolbar -> + parentActivity?.setSupportActionBar(toolbar) + } + } + /** * Show the loader */ @@ -51,4 +77,21 @@ open class PokerAnalyticsFragment: Fragment() { loaderDialogFragment = null } + /** + * Set the toolbar title + */ + fun setToolbarTitle(title: String?) { + view?.findViewById(R.id.toolbar)?.let { toolbar -> + toolbar.title = title + } + parentActivity?.supportActionBar?.title = title + } + + /** + * Display or not the back arrow icon + */ + fun setDisplayHomeAsUpEnabled(enabled: Boolean) { + parentActivity?.supportActionBar?.setDisplayHomeAsUpEnabled(enabled) + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt index bbb837f9..4cb5b474 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/EditableDataFragment.kt @@ -8,7 +8,6 @@ import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.LinearLayoutManager import io.realm.RealmObject import kotlinx.android.synthetic.main.fragment_editable_data.* -import kotlinx.android.synthetic.main.fragment_editable_data.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.ConfigurationException import net.pokeranalytics.android.model.LiveData @@ -18,7 +17,6 @@ import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -29,7 +27,6 @@ import net.pokeranalytics.android.ui.view.RowRepresentable open class EditableDataFragment : RealmFragment(), RowRepresentableDelegate { - lateinit var parentActivity: PokerAnalyticsActivity lateinit var item: RealmObject lateinit var liveDataType: LiveData lateinit var rowRepresentableAdapter: RowRepresentableAdapter @@ -85,13 +82,10 @@ open class EditableDataFragment : RealmFragment(), RowRepresentableDelegate { * Init UI */ private fun initUI() { - parentActivity = activity as PokerAnalyticsActivity - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - val viewManager = LinearLayoutManager(requireContext()) + setDisplayHomeAsUpEnabled(true) + val viewManager = LinearLayoutManager(requireContext()) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager @@ -113,11 +107,13 @@ open class EditableDataFragment : RealmFragment(), RowRepresentableDelegate { val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) proxyItem?.let { //TODO: Localize - this.appBar.toolbar.title = "Update ${this.liveDataType.localizedTitle(this.parentActivity).toLowerCase().capitalize()}" + //this.appBar.toolbar.title = "Update ${this.liveDataType.localizedTitle(requireContext()).toLowerCase().capitalize()}" + setToolbarTitle("Update ${this.liveDataType.localizedTitle(requireContext()).toLowerCase().capitalize()}") isUpdating = true } ?: run { //TODO: Localize - this.appBar.toolbar.title = this.liveDataType.newEntityLocalizedTitle(requireContext()) + //this.appBar.toolbar.title = this.liveDataType.newEntityLocalizedTitle(requireContext()) + setToolbarTitle(this.liveDataType.newEntityLocalizedTitle(requireContext())) } this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt index 61679a7c..06ca3d11 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt @@ -38,7 +38,7 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS super.onViewCreated(view, savedInstanceState) shouldOpenKeyboard = false - locationActivated = parentActivity.hasLocationPermissionGranted() + locationActivated = parentActivity?.hasLocationPermissionGranted() ?: false if (isUpdating) { @@ -168,11 +168,11 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS val maxResults = 5 - parentActivity.askForPlacesRequest { success, places -> + parentActivity?.askForPlacesRequest { success, places -> if (success) { // Try to get the location of the user - parentActivity.findCurrentLocation {currentLocation -> + parentActivity?.findCurrentLocation {currentLocation -> currentLocation?.let { location.latitude = currentLocation.latitude location.longitude = currentLocation.longitude diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt index ce526f85..0051c6f6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt @@ -1,13 +1,10 @@ package net.pokeranalytics.android.ui.fragment.report -import android.os.Bundle import android.view.Menu import android.view.MenuInflater import android.view.MenuItem -import android.view.View import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Report -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.fragment.components.RealmFragment abstract class AbstractReportFragment : RealmFragment() { @@ -17,7 +14,6 @@ abstract class AbstractReportFragment : RealmFragment() { protected var reportTitle: String? = null private var editableMenu: Menu? = null - protected lateinit var parentActivity: PokerAnalyticsActivity override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { menu?.clear() @@ -34,11 +30,6 @@ abstract class AbstractReportFragment : RealmFragment() { return true } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - parentActivity = activity as PokerAnalyticsActivity - } - /** * Update menu UI */ @@ -50,7 +41,6 @@ abstract class AbstractReportFragment : RealmFragment() { } private fun saveReportRequest() { - } private fun saveReport(name: String) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComparisonReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComparisonReportFragment.kt index ab4bc327..3d93fa50 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComparisonReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComparisonReportFragment.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.android.material.tabs.TabLayout -import kotlinx.android.synthetic.main.fragment_progress_report.toolbar import kotlinx.android.synthetic.main.fragment_report_details.* import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Report @@ -53,18 +52,14 @@ class ComparisonReportFragment : AbstractReportFragment() { */ private fun initUI() { - // Avoid a bug during setting the titleResId - toolbar.title = "" + setDisplayHomeAsUpEnabled(true) + setToolbarTitle(reportTitle) - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - - toolbar.title = reportTitle - - val reportPagerAdapter = ReportPagerAdapter(requireContext(), parentActivity.supportFragmentManager, selectedReport) - viewPager.adapter = reportPagerAdapter - viewPager.offscreenPageLimit = 3 + parentActivity?.let { + val reportPagerAdapter = ReportPagerAdapter(requireContext(), it.supportFragmentManager, selectedReport) + viewPager.adapter = reportPagerAdapter + viewPager.offscreenPageLimit = 3 + } tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt index 2ac17009..fa1d98c2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt @@ -80,19 +80,15 @@ class ProgressReportFragment : AbstractReportFragment() { */ private fun initUI() { - // Avoid a bug during setting the titleResId - toolbar.title = "" + setDisplayHomeAsUpEnabled(true) + setToolbarTitle(this.reportTitle ?: stat.localizedTitle(requireContext())) - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - - val fragmentManager = parentActivity.supportFragmentManager - val fragmentTransaction = fragmentManager.beginTransaction() + val fragmentManager = parentActivity?.supportFragmentManager + val fragmentTransaction = fragmentManager?.beginTransaction() graphFragment = GraphFragment() - fragmentTransaction.add(R.id.graphContainer, graphFragment) - fragmentTransaction.commit() + fragmentTransaction?.add(R.id.graphContainer, graphFragment) + fragmentTransaction?.commit() stat.aggregationTypes.firstOrNull()?.let { aggregationType -> reports[aggregationType]?.let { report -> @@ -100,7 +96,6 @@ class ProgressReportFragment : AbstractReportFragment() { } } - toolbar.title = this.reportTitle ?: stat.localizedTitle(requireContext()) val aggregationTypes = stat.aggregationTypes aggregationTypes.forEachIndexed { index, type -> diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/TableReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/TableReportFragment.kt index 1e55c8a4..59c70e84 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/TableReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/TableReportFragment.kt @@ -4,7 +4,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import kotlinx.android.synthetic.main.fragment_progress_report.* import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Report @@ -41,19 +40,13 @@ class TableReportFragment : AbstractReportFragment() { private fun initUI() { - // Avoid a bug during setting the titleResId - toolbar.title = "" + setDisplayHomeAsUpEnabled(true) + setToolbarTitle(reportTitle) - parentActivity.setSupportActionBar(toolbar) - parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) - setHasOptionsMenu(true) - - toolbar.title = reportTitle - - val fragmentTransaction = parentActivity.supportFragmentManager.beginTransaction() + val fragmentTransaction = parentActivity?.supportFragmentManager?.beginTransaction() val fragment = ComposableTableReportFragment.newInstance(this.selectedReport) - fragmentTransaction.add(R.id.tableReportContainer, fragment) - fragmentTransaction.commit() + fragmentTransaction?.add(R.id.tableReportContainer, fragment) + fragmentTransaction?.commit() this.tableReportFragment = fragment