Update navigation

feature/top10
Aurelien Hubert 7 years ago
parent f182d982ff
commit 274bc2f8de
  1. 10
      app/src/main/AndroidManifest.xml
  2. 31
      app/src/main/java/net/pokeranalytics/android/model/MoreItem.kt
  3. 33
      app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt
  4. 59
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  5. 33
      app/src/main/java/net/pokeranalytics/android/ui/activity/SettingsActivity.kt
  6. 25
      app/src/main/java/net/pokeranalytics/android/ui/adapter/HomePagerAdapter.kt
  7. 73
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt
  8. 63
      app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt
  9. 88
      app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt
  10. 63
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  11. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  12. 26
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  13. 13
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt
  14. 10
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  15. 30
      app/src/main/res/menu/navigation.xml

@ -34,6 +34,16 @@
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".ui.activity.BankrollActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SettingsActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.DataListActivity"
android:launchMode="singleTop"

@ -0,0 +1,31 @@
package net.pokeranalytics.android.model
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 MoreItem : 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
}

@ -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)
}
}

@ -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)
}
false
R.id.navigation_reports -> {
displayFragment(3)
}
R.id.navigation_more -> {
displayFragment(4)
}
}
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) {
0 -> FiltersActivity.newInstance(this@HomeActivity)
}
}
.setNegativeButton(R.string.cancel) { _, _ ->
Timber.d("Click on cancel")
}
builder.show()
}
}

@ -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)
}
}

@ -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
}
}

@ -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
}
}
}

@ -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
}
}
}

@ -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<RowRepresentable> = 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<RowRepresentable>? {
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
}
}
}

@ -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
}
}
}

@ -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)

@ -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<RowRepresentable>? {
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
*/

@ -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

@ -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<AppCompatImageView>(R.id.icon)?.let { imageView ->
row.imageRes?.let { imageRes ->
imageView.setImageResource(imageRes)
}
}
// Listener
val listener = View.OnClickListener {
itemView.findViewById<SwitchCompat?>(R.id.switchView)?.let {

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- //CLEAN
<item
android:id="@+id/navigation_history"
android:icon="@drawable/ic_outline_history"
@ -8,7 +9,7 @@
<item
android:id="@+id/navigation_stats"
android:icon="@drawable/ic_outline_chart_bar"
android:icon="@drawable/ic_outline_chart"
android:title="@string/stats" />
<item
@ -16,4 +17,31 @@
android:icon="@drawable/ic_outline_settings"
android:title="@string/services" />
-->
<item
android:id="@+id/navigation_history"
android:icon="@drawable/ic_outline_history"
android:title="@string/feed" />
<item
android:id="@+id/navigation_stats"
android:icon="@drawable/ic_outline_chart"
android:title="@string/stats" />
<item
android:id="@+id/navigation_calendar"
android:icon="@drawable/ic_outline_calendar"
android:title="@string/calendar" />
<item
android:id="@+id/navigation_reports"
android:icon="@drawable/ic_outline_chart_bar"
android:title="@string/reports" />
<item
android:id="@+id/navigation_more"
android:icon="@drawable/ic_outline_more"
android:title="@string/more" />
</menu>

Loading…
Cancel
Save