From 274bc2f8deb2bef6ac013e5c81e12a7be8d1e2a9 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 12 Apr 2019 11:20:34 +0200 Subject: [PATCH] Update navigation --- app/src/main/AndroidManifest.xml | 16 +++- .../pokeranalytics/android/model/MoreItem.kt | 31 +++++++ .../android/ui/activity/BankrollActivity.kt | 33 +++++++ .../android/ui/activity/HomeActivity.kt | 61 ++++++++++--- .../android/ui/activity/SettingsActivity.kt | 33 +++++++ .../android/ui/adapter/HomePagerAdapter.kt | 25 ++++-- .../android/ui/fragment/BankrollFragment.kt | 73 +++++++++++++++ .../android/ui/fragment/CalendarFragment.kt | 63 +++++++++++++ .../android/ui/fragment/MoreFragment.kt | 88 +++++++++++++++++++ .../android/ui/fragment/ReportsFragment.kt | 63 +++++++++++++ .../android/ui/fragment/SessionFragment.kt | 5 -- .../android/ui/fragment/SettingsFragment.kt | 26 ++++-- .../android/ui/view/RowRepresentable.kt | 13 ++- .../android/ui/view/RowViewType.kt | 10 ++- app/src/main/res/menu/navigation.xml | 56 +++++++++--- 15 files changed, 546 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/model/MoreItem.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/activity/SettingsActivity.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f304e967..b593e589 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,6 +34,16 @@ android:screenOrientation="portrait" android:windowSoftInputMode="adjustNothing" /> + + + + + android:name=".ui.activity.GraphActivity" + android:launchMode="singleTop" + android:screenOrientation="portrait" /> R.string.bankroll + SETTINGS -> R.string.services + } + } + + override val imageRes: Int? + get() { + return when(this) { + BANKROLL -> R.drawable.ic_outline_lock + SETTINGS -> R.drawable.ic_outline_settings + } + } + + override val viewType: Int = RowViewType.TITLE_ICON_ARROW.ordinal +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt new file mode 100644 index 00000000..e1b6ea05 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt @@ -0,0 +1,33 @@ +package net.pokeranalytics.android.ui.activity + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity + +class BankrollActivity : PokerAnalyticsActivity() { + + companion object { + fun newInstance(context: Context) { + val intent = Intent(context, BankrollActivity::class.java) + context.startActivity(intent) + } + + /** + * Create a new instance for result + */ + fun newInstanceForResult(fragment: Fragment, requestCode: Int) { + val intent = Intent(fragment.requireContext(), BankrollActivity::class.java) + fragment.startActivityForResult(intent, requestCode) + } + + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_bankroll) + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt index 39602da7..096a6de5 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt @@ -32,20 +32,35 @@ class HomeActivity : PokerAnalyticsActivity() { private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> when (item.itemId) { - net.pokeranalytics.android.R.id.navigation_history -> { + //CLEAN + /* + R.id.navigation_history -> { displayFragment(0) - return@OnNavigationItemSelectedListener true } - net.pokeranalytics.android.R.id.navigation_stats -> { + R.id.navigation_stats -> { displayFragment(1) - return@OnNavigationItemSelectedListener true } - net.pokeranalytics.android.R.id.navigation_settings -> { + R.id.navigation_settings -> { displayFragment(2) - return@OnNavigationItemSelectedListener true + } + */ + R.id.navigation_history -> { + displayFragment(0) + } + R.id.navigation_stats -> { + displayFragment(1) + } + R.id.navigation_calendar -> { + displayFragment(2) + } + R.id.navigation_reports -> { + displayFragment(3) + } + R.id.navigation_more -> { + displayFragment(4) } } - false + return@OnNavigationItemSelectedListener true } override fun onCreate(savedInstanceState: Bundle?) { @@ -97,7 +112,7 @@ class HomeActivity : PokerAnalyticsActivity() { setSupportActionBar(toolbar) navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) - navigation.selectedItemId = net.pokeranalytics.android.R.id.navigation_history + navigation.selectedItemId = R.id.navigation_history val homePagerAdapter = HomePagerAdapter(supportFragmentManager) viewPager.offscreenPageLimit = 5 @@ -134,9 +149,10 @@ class HomeActivity : PokerAnalyticsActivity() { */ private fun updateToolbar(index: Int) { when (index) { + //CLEAN + /* 0 -> { toolbar.title = getString(R.string.feed) - //TODO: Change filter button visibility homeMenu?.findItem(R.id.filter)?.isVisible = false } 1 -> { @@ -147,6 +163,28 @@ class HomeActivity : PokerAnalyticsActivity() { toolbar.title = getString(R.string.services) homeMenu?.findItem(R.id.filter)?.isVisible = false } + */ + + 0 -> { + toolbar.title = getString(R.string.feed) + homeMenu?.findItem(R.id.filter)?.isVisible = true + } + 1 -> { + toolbar.title = getString(R.string.stats) + homeMenu?.findItem(R.id.filter)?.isVisible = true + } + 2 -> { + toolbar.title = getString(R.string.calendar) + homeMenu?.findItem(R.id.filter)?.isVisible = false + } + 3 -> { + toolbar.title = getString(R.string.reports) + homeMenu?.findItem(R.id.filter)?.isVisible = false + } + 4 -> { + toolbar.title = getString(R.string.more) + homeMenu?.findItem(R.id.filter)?.isVisible = false + } } } @@ -171,18 +209,15 @@ class HomeActivity : PokerAnalyticsActivity() { .setCancelable(true) .setItems(choices.toTypedArray()) { _, which -> Timber.d("Click on $which") - - when(which) { + when (which) { 0 -> FiltersActivity.newInstance(this@HomeActivity) } - } .setNegativeButton(R.string.cancel) { _, _ -> Timber.d("Click on cancel") } builder.show() - } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/SettingsActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/SettingsActivity.kt new file mode 100644 index 00000000..56a1701d --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/SettingsActivity.kt @@ -0,0 +1,33 @@ +package net.pokeranalytics.android.ui.activity + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity + +class SettingsActivity : PokerAnalyticsActivity() { + + companion object { + fun newInstance(context: Context) { + val intent = Intent(context, SettingsActivity::class.java) + context.startActivity(intent) + } + + /** + * Create a new instance for result + */ + fun newInstanceForResult(fragment: Fragment, requestCode: Int) { + val intent = Intent(fragment.requireContext(), SettingsActivity::class.java) + fragment.startActivityForResult(intent, requestCode) + } + + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_settings) + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/HomePagerAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/HomePagerAdapter.kt index 17a16d3a..5e504fb1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/HomePagerAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/HomePagerAdapter.kt @@ -4,9 +4,7 @@ import android.util.SparseArray import android.view.ViewGroup import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentStatePagerAdapter -import net.pokeranalytics.android.ui.fragment.HistoryFragment -import net.pokeranalytics.android.ui.fragment.SettingsFragment -import net.pokeranalytics.android.ui.fragment.StatsFragment +import net.pokeranalytics.android.ui.fragment.* import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import java.lang.ref.WeakReference @@ -19,15 +17,23 @@ class HomePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAda override fun getItem(position: Int): PokerAnalyticsFragment { return when (position) { + //CLEAN + /* 0 -> HistoryFragment.newInstance() 1 -> StatsFragment.newInstance() 2 -> SettingsFragment.newInstance() + */ + 0 -> HistoryFragment.newInstance() + 1 -> StatsFragment.newInstance() + 2 -> CalendarFragment.newInstance() + 3 -> ReportsFragment.newInstance() + 4 -> MoreFragment.newInstance() else -> HistoryFragment.newInstance() } } override fun getCount(): Int { - return 3 + return 5//3 } override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { @@ -42,11 +48,18 @@ class HomePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAda } override fun getItemPosition(obj: Any): Int { - val fragment = obj as PokerAnalyticsFragment - return when (fragment) { + return when (obj) { + //CLEAN + /* HistoryFragment::class.java -> 0 StatsFragment::class.java -> 1 SettingsFragment::class.java -> 2 + */ + HistoryFragment::class.java -> 0 + StatsFragment::class.java -> 1 + CalendarFragment::class.java -> 2 + ReportsFragment::class.java -> 3 + MoreFragment::class.java -> 4 else -> -1 } } 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 new file mode 100644 index 00000000..b0c06521 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt @@ -0,0 +1,73 @@ +package net.pokeranalytics.android.ui.fragment + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.fragment_bankroll.* +import kotlinx.android.synthetic.main.fragment_stats.recyclerView +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity +import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment + +class BankrollFragment : PokerAnalyticsFragment() { + + companion object { + + /** + * Create new instance + */ + fun newInstance(): BankrollFragment { + val fragment = BankrollFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + } + + private lateinit var parentActivity: PokerAnalyticsActivity + + // Life Cycle + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_bankroll, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + + // Business + + /** + * Init data + */ + private fun initData() { + + } + + /** + * Init UI + */ + private fun initUI() { + + parentActivity = activity as PokerAnalyticsActivity + + parentActivity.setSupportActionBar(toolbar) + parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + setHasOptionsMenu(true) + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + //adapter = statsAdapter + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt new file mode 100644 index 00000000..b05d036f --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt @@ -0,0 +1,63 @@ +package net.pokeranalytics.android.ui.fragment + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.fragment_stats.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment + +class CalendarFragment : PokerAnalyticsFragment() { + + companion object { + + /** + * Create new instance + */ + fun newInstance(): CalendarFragment { + val fragment = CalendarFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + } + + // Life Cycle + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_calendar, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + + // Business + + /** + * Init data + */ + private fun initData() { + + } + + /** + * Init UI + */ + private fun initUI() { + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + //adapter = statsAdapter + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt new file mode 100644 index 00000000..9baa6e2e --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt @@ -0,0 +1,88 @@ +package net.pokeranalytics.android.ui.fragment + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.fragment_stats.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.MoreItem +import net.pokeranalytics.android.ui.activity.BankrollActivity +import net.pokeranalytics.android.ui.activity.SettingsActivity +import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter +import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate +import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource +import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment +import net.pokeranalytics.android.ui.view.RowRepresentable + +class MoreFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { + + companion object { + + /** + * Create new instance + */ + fun newInstance(): MoreFragment { + val fragment = MoreFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + } + + private lateinit var moreAdapter: RowRepresentableAdapter + + private var rowRepresentables: ArrayList = ArrayList() + + + // Life Cycle + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_calendar, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + // Rows + override fun adapterRows(): List? { + return rowRepresentables + } + + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + super.onRowSelected(position, row, fromAction) + when(row) { + MoreItem.BANKROLL -> BankrollActivity.newInstance(requireContext()) + MoreItem.SETTINGS -> SettingsActivity.newInstance(requireContext()) + } + } + + // Business + + /** + * Init data + */ + private fun initData() { + rowRepresentables.addAll(MoreItem.values()) + moreAdapter = RowRepresentableAdapter(this, this) + } + + /** + * Init UI + */ + private fun initUI() { + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = moreAdapter + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt new file mode 100644 index 00000000..06e30b5a --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt @@ -0,0 +1,63 @@ +package net.pokeranalytics.android.ui.fragment + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.fragment_stats.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment + +class ReportsFragment : PokerAnalyticsFragment() { + + companion object { + + /** + * Create new instance + */ + fun newInstance(): ReportsFragment { + val fragment = ReportsFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + } + + // Life Cycle + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_reports, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + + // Business + + /** + * Init data + */ + private fun initData() { + + } + + /** + * Init UI + */ + private fun initUI() { + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + //adapter = statsAdapter + } + } + +} \ No newline at end of file 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 a0f6893a..b318e54b 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 @@ -6,7 +6,6 @@ import android.view.* import android.view.animation.OvershootInterpolator import android.widget.Toast import androidx.appcompat.app.AlertDialog -import androidx.core.content.ContextCompat import androidx.interpolator.view.animation.FastOutSlowInInterpolator import androidx.recyclerview.widget.DiffUtil import io.realm.kotlin.where @@ -169,7 +168,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate { when (currentSession.getState()) { SessionState.PENDING, SessionState.PLANNED -> { - state.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) sessionMenu?.findItem(R.id.restart)?.isVisible = false floatingActionButton.setImageResource(R.drawable.ic_outline_play) sessionMenu?.findItem(R.id.stop)?.isVisible = false @@ -178,7 +176,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate { .setInterpolator(OvershootInterpolator()).start() } SessionState.STARTED -> { - state.setTextColor(ContextCompat.getColor(requireContext(), R.color.green)) sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_pause) sessionMenu?.findItem(R.id.stop)?.isVisible = true @@ -188,7 +185,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate { handler.postDelayed(refreshTimer, 30000) } SessionState.PAUSED -> { - state.setTextColor(ContextCompat.getColor(requireContext(), R.color.blue)) sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_play) sessionMenu?.findItem(R.id.stop)?.isVisible = true @@ -197,7 +193,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate { .setInterpolator(OvershootInterpolator()).start() } SessionState.FINISHED -> { - state.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) sessionMenu?.findItem(R.id.restart)?.isVisible = true sessionMenu?.findItem(R.id.stop)?.isVisible = false floatingActionButton.animate().scaleX(0f).scaleY(0f).alpha(0f) 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 8b6a3802..97090c0d 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 @@ -65,16 +65,17 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(net.pokeranalytics.android.R.layout.fragment_settings, container, false) + return inflater.inflate(R.layout.fragment_settings, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initData() + initUI() } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (requestCode == SettingsFragment.REQUEST_CODE_CURRENCY && resultCode == Activity.RESULT_OK) { + if (requestCode == REQUEST_CODE_CURRENCY && resultCode == Activity.RESULT_OK) { data?.let { Preferences.setCurrencyCode(data.getStringExtra(CurrenciesFragment.INTENT_CURRENCY_CODE), requireContext()) settingsAdapterRow.refreshRow(SettingRow.CURRENCY) @@ -83,7 +84,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta } override fun adapterRows(): List? { - return SettingsFragment.rowRepresentation + return rowRepresentation } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { @@ -92,7 +93,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta SettingRow.RATE_APP -> parentActivity.openPlayStorePage() SettingRow.CONTACT_US -> parentActivity.openContactMail(R.string.contact) SettingRow.BUG_REPORT -> parentActivity.openContactMail(R.string.bug_report_subject) - SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, SettingsFragment.REQUEST_CODE_CURRENCY) + SettingRow.CURRENCY -> CurrenciesActivity.newInstanceForResult(this@SettingsFragment, REQUEST_CODE_CURRENCY) SettingRow.FOLLOW_US -> { when (position) { 0 -> parentActivity.openUrl(URL.BLOG.value) @@ -112,24 +113,35 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Sta } /** - * Init data + * Init UI */ - private fun initData() { + private fun initUI() { parentActivity = activity as PokerAnalyticsActivity + parentActivity.setSupportActionBar(toolbar) + parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + setHasOptionsMenu(true) + val viewManager = LinearLayoutManager(requireContext()) settingsAdapterRow = RowRepresentableAdapter( this, this ) - customRecyclerView.apply { + recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager adapter = settingsAdapterRow } } + /** + * Init data + */ + private fun initData() { + + } + /** * Open GDPR Activity */ diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt index ba8b6b90..0aa25f23 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt @@ -8,7 +8,7 @@ import net.pokeranalytics.android.util.NULL_TEXT /** * An interface extending Displayable to add a way to represent an object as a String */ -interface RowRepresentable : Displayable, EditDataSource { +interface RowRepresentable : Displayable, EditDataSource, ImageDecorator { fun getDisplayName(): String { return NULL_TEXT @@ -28,6 +28,17 @@ interface DefaultEditDataSource : EditDataSource, Localizable { } } +/** + * An interface to add an image to a row + */ +interface ImageDecorator { + + val imageRes: Int? + get() { + return null + } +} + /** * An interface used so that enums numericValues can be represented visually * as rows in RecyclerViews diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index c887ff71..5757a64d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -43,6 +43,7 @@ enum class RowViewType(private var layoutRes: Int) { // Row TITLE(R.layout.row_title), TITLE_ARROW(R.layout.row_title_arrow), + TITLE_ICON_ARROW(R.layout.row_title_icon_arrow), TITLE_VALUE(R.layout.row_title_value), TITLE_VALUE_ARROW(R.layout.row_title_value_arrow), TITLE_SWITCH(R.layout.row_title_switch), @@ -75,7 +76,7 @@ enum class RowViewType(private var layoutRes: Int) { // Row View Holder HEADER_TITLE, HEADER_TITLE_VALUE, HEADER_TITLE_AMOUNT, HEADER_TITLE_AMOUNT_BIG, LOCATION_TITLE, INFO, - TITLE, TITLE_ARROW, TITLE_VALUE, TITLE_VALUE_ARROW, TITLE_GRID, TITLE_SWITCH, TITLE_CHECK, TITLE_VALUE_CHECK, + TITLE, TITLE_ARROW, TITLE_ICON_ARROW, TITLE_VALUE, TITLE_VALUE_ARROW, TITLE_GRID, TITLE_SWITCH, TITLE_CHECK, TITLE_VALUE_CHECK, DATA, BOTTOM_SHEET_DATA, LOADER -> RowViewHolder(layout) // Row Session @@ -157,6 +158,13 @@ enum class RowViewType(private var layoutRes: Int) { it.text = adapter.dataSource.stringForRow(row, itemView.context) } + // Icon + itemView.findViewById(R.id.icon)?.let { imageView -> + row.imageRes?.let { imageRes -> + imageView.setImageResource(imageRes) + } + } + // Listener val listener = View.OnClickListener { itemView.findViewById(R.id.switchView)?.let { diff --git a/app/src/main/res/menu/navigation.xml b/app/src/main/res/menu/navigation.xml index 762f9cdb..6ac0f33b 100644 --- a/app/src/main/res/menu/navigation.xml +++ b/app/src/main/res/menu/navigation.xml @@ -1,19 +1,47 @@ - - - - - + + + + + + + + + + +