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" /> 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..406a0fa7 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt @@ -0,0 +1,93 @@ +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.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 +import net.pokeranalytics.android.ui.view.rowrepresentable.MoreTabRow + +class MoreFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { + + companion object { + + /** + * Create new instance + */ + fun newInstance(): MoreFragment { + val fragment = MoreFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + + val rowRepresentation: List by lazy { + val rows = ArrayList() + rows.addAll(MoreTabRow.values()) + rows + } + + } + + private lateinit var moreAdapter: RowRepresentableAdapter + + + // 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 rowRepresentation + } + + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + super.onRowSelected(position, row, fromAction) + when(row) { + MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext()) + MoreTabRow.SETTINGS -> SettingsActivity.newInstance(requireContext()) + } + } + + // Business + + /** + * Init data + */ + private fun initData() { + } + + /** + * Init UI + */ + private fun initUI() { + + moreAdapter = RowRepresentableAdapter(this, this) + + 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..8dc97324 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt @@ -0,0 +1,84 @@ +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.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 +import net.pokeranalytics.android.ui.view.rowrepresentable.ReportRow + +class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { + + companion object { + + /** + * Create new instance + */ + fun newInstance(): ReportsFragment { + val fragment = ReportsFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + + val rowRepresentation: List by lazy { + val rows = ArrayList() + rows.addAll(ReportRow.getRows()) + rows + } + } + + private lateinit var reportsAdapter: RowRepresentableAdapter + + + // 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() + } + + // Rows + + override fun adapterRows(): List? { + return rowRepresentation + } + + + // Business + + /** + * Init data + */ + private fun initData() { + } + + /** + * Init UI + */ + private fun initUI() { + + reportsAdapter = RowRepresentableAdapter(this, this) + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = reportsAdapter + } + } + +} \ 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 4e757885..1659120d 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 @@ -44,6 +44,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), @@ -76,7 +77,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 @@ -159,6 +160,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/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt new file mode 100644 index 00000000..4e2fe8bc --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt @@ -0,0 +1,31 @@ +package net.pokeranalytics.android.ui.view.rowrepresentable + +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType + +/** + * An enum managing the rows in the more tabs + */ +enum class MoreTabRow : RowRepresentable { + BANKROLL, + SETTINGS; + + override val resId: Int? + get() { + return when(this) { + BANKROLL -> 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/view/rowrepresentable/ReportRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt new file mode 100644 index 00000000..12209607 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/ReportRow.kt @@ -0,0 +1,48 @@ +package net.pokeranalytics.android.ui.view.rowrepresentable + +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType + +/** + * An enum managing the report rows + */ +enum class ReportRow : RowRepresentable { + BLINDS, + BUY_IN, + DAY_OF_WEEKS, + GENERAL, + LOCATIONS, + NUMBER_OF_TABLES, + TOURNAMENT_TYPES, + VARIANT; + + + companion object { + /** + * Return the report rows + */ + fun getRows(): ArrayList { + val rows = ArrayList() + rows.add(CustomizableRowRepresentable(customViewType = RowViewType.HEADER_TITLE, resId = R.string.comparison)) + rows.addAll(values()) + return rows + } + } + + override val resId: Int? + get() { + return when (this) { + BLINDS -> R.string.blinds + BUY_IN -> R.string.buyin + DAY_OF_WEEKS -> R.string.day_of_the_week + GENERAL -> R.string.general + LOCATIONS -> R.string.locations + NUMBER_OF_TABLES -> R.string.number_of_tables + TOURNAMENT_TYPES -> R.string.tournament_type_complete + VARIANT -> R.string.variant + } + } + + override val viewType: Int = RowViewType.TITLE_ARROW.ordinal +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_outline_calendar.xml b/app/src/main/res/drawable/ic_outline_calendar.xml new file mode 100644 index 00000000..9307b8fd --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_calendar.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_chart.xml b/app/src/main/res/drawable/ic_outline_chart.xml new file mode 100644 index 00000000..0d4f8c3f --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_chart.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_lock.xml b/app/src/main/res/drawable/ic_outline_lock.xml new file mode 100644 index 00000000..d4968533 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_lock.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_more.xml b/app/src/main/res/drawable/ic_outline_more.xml new file mode 100644 index 00000000..64325fda --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_more.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_bankroll.xml b/app/src/main/res/layout/activity_bankroll.xml new file mode 100644 index 00000000..eb1d8184 --- /dev/null +++ b/app/src/main/res/layout/activity_bankroll.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 09f1bbc4..275db019 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -15,16 +15,6 @@ app:layout_constraintTop_toTopOf="parent" app:title="@string/app_name" /> - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bankroll.xml b/app/src/main/res/layout/fragment_bankroll.xml new file mode 100644 index 00000000..0cf1c9b1 --- /dev/null +++ b/app/src/main/res/layout/fragment_bankroll.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml new file mode 100644 index 00000000..aaa1d704 --- /dev/null +++ b/app/src/main/res/layout/fragment_calendar.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_more.xml b/app/src/main/res/layout/fragment_more.xml new file mode 100644 index 00000000..aaa1d704 --- /dev/null +++ b/app/src/main/res/layout/fragment_more.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_reports.xml b/app/src/main/res/layout/fragment_reports.xml new file mode 100644 index 00000000..aaa1d704 --- /dev/null +++ b/app/src/main/res/layout/fragment_reports.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_session.xml b/app/src/main/res/layout/fragment_session.xml index 53457fd3..872fc2f6 100644 --- a/app/src/main/res/layout/fragment_session.xml +++ b/app/src/main/res/layout/fragment_session.xml @@ -11,102 +11,18 @@ android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - - - - - - - - - - - - - - + android:paddingBottom="96dp" /> - + diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 8b6825d0..8542d548 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1,17 +1,57 @@ - - + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/row_title_arrow.xml b/app/src/main/res/layout/row_title_arrow.xml index a1d94800..1d73205b 100644 --- a/app/src/main/res/layout/row_title_arrow.xml +++ b/app/src/main/res/layout/row_title_arrow.xml @@ -12,10 +12,11 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="@+id/guidelineEnd" + app:layout_constraintEnd_toStartOf="@+id/nextArrow" app:layout_constraintStart_toStartOf="@+id/guidelineStart" app:layout_constraintTop_toTopOf="parent" tools:text="Data Type Title" /> diff --git a/app/src/main/res/layout/row_title_icon_arrow.xml b/app/src/main/res/layout/row_title_icon_arrow.xml new file mode 100644 index 00000000..950ad915 --- /dev/null +++ b/app/src/main/res/layout/row_title_icon_arrow.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + \ No newline at end of file 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 @@ - - - - - + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5e551563..958ed4bf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,6 +5,8 @@ Please set a start date for the session Hour Minute + More + Variant