Improve UI for settings

feature/top10
Aurelien Hubert 7 years ago
parent 2129cde49a
commit e96647e8ad
  1. 75
      app/src/main/java/net/pokeranalytics/android/ui/activity/DataListActivity.kt
  2. 29
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt
  4. 2
      app/src/main/res/drawable/separator.xml
  5. 4
      app/src/main/res/layout/activity_data_list.xml
  6. 4
      app/src/main/res/layout/activity_editable_data.xml
  7. 4
      app/src/main/res/layout/activity_session.xml
  8. 86
      app/src/main/res/layout/fragment_data_list.xml
  9. 2
      app/src/main/res/layout/fragment_session.xml

@ -5,46 +5,45 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import kotlinx.android.synthetic.main.activity_data_list.* import kotlinx.android.synthetic.main.activity_data_list.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.DataListFragment
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.DataListFragment
class DataListActivity : PokerAnalyticsActivity() { class DataListActivity : PokerAnalyticsActivity() {
enum class IntentKey(val keyName : String) { enum class IntentKey(val keyName: String) {
DATATYPE("DATATYPE"), DATA_TYPE("DATA_TYPE"),
} }
companion object { companion object {
fun newInstance(context: Context, dataType: Int) { fun newInstance(context: Context, dataType: Int) {
val intent = Intent(context, DataListActivity::class.java) val intent = Intent(context, DataListActivity::class.java)
intent.putExtra(IntentKey.DATATYPE.keyName, dataType) intent.putExtra(IntentKey.DATA_TYPE.keyName, dataType)
context.startActivity(intent) context.startActivity(intent)
} }
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_data_list) setContentView(R.layout.activity_data_list)
initUI() initUI()
} }
/** /**
* Init UI * Init UI
*/ */
private fun initUI() { private fun initUI() {
val dataType = intent.getIntExtra(IntentKey.DATATYPE.keyName, 0) val dataType = intent.getIntExtra(IntentKey.DATA_TYPE.keyName, 0)
val fragment = dataListFragment as DataListFragment val fragment = dataListFragment as DataListFragment
fragment.setData(dataType) fragment.setData(dataType)
} }
/** /**
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
}
}
} }

@ -11,6 +11,7 @@ import kotlinx.android.synthetic.main.fragment_data_list.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.activity.EditableDataActivity 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.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -18,14 +19,13 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.SettingRow import net.pokeranalytics.android.ui.view.SettingRow
import timber.log.Timber
class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
RowRepresentableDelegate { RowRepresentableDelegate {
private lateinit var dataType: SettingRow private lateinit var dataType: SettingRow
private lateinit var items: RealmResults<*> private lateinit var items: RealmResults<*>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_data_list, container, false) return inflater.inflate(R.layout.fragment_data_list, container, false)
@ -55,18 +55,31 @@ class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {
this.dataType.relatedResultsRepresentable?.let { this.dataType.relatedResultsRepresentable?.let {
EditableDataActivity.newInstance(requireContext(), it.ordinal, (this.items[position] as Savable).uniqueIdentifier()) EditableDataActivity.newInstance(
requireContext(),
it.ordinal,
(this.items[position] as Savable).uniqueIdentifier()
)
} }
} }
private fun initData() { private fun initData() {
} }
/** /**
* Init UI * Init UI
*/ */
private fun initUI() { private fun initUI() {
val activity = activity as PokerAnalyticsActivity
// Avoid a bug during setting the title
toolbar.title = ""
activity.setSupportActionBar(toolbar)
activity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
setHasOptionsMenu(true)
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
val dataListAdapter = RowRepresentableAdapter(this, this) val dataListAdapter = RowRepresentableAdapter(this, this)
@ -85,22 +98,20 @@ class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
) )
} }
} }
} }
/** /**
* Set fragment data * Set fragment data
*/ */
fun setData(dataType: Int) { fun setData(dataType: Int) {
this.dataType = SettingRow.values()[dataType] this.dataType = SettingRow.values()[dataType]
this.title.text = this.dataType.name.toLowerCase().capitalize()
this.toolbar.title = this.dataType.localizedTitle(requireContext())
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
this.dataType.relatedResultsRepresentable?.let { this.dataType.relatedResultsRepresentable?.let {
this.items = it.items(realm) this.items = it.items(realm)
this.items.addChangeListener { newItems -> this.items.addChangeListener { newItems ->
Timber.d("newItems: ${newItems.size}")
this.recyclerView.adapter?.notifyDataSetChanged() this.recyclerView.adapter?.notifyDataSetChanged()
} }
} }

@ -320,7 +320,7 @@ enum class SettingRow : RowRepresentable {
BANKROLL, BANKROLL,
GAME, GAME,
LOCATION, LOCATION,
TOURNAMENT_FEATURE, TOURNAMENT_TYPE,
TRANSACTION_TYPE; TRANSACTION_TYPE;
override val resId: Int? override val resId: Int?
@ -343,7 +343,7 @@ enum class SettingRow : RowRepresentable {
BANKROLL -> LiveData.BANKROLL BANKROLL -> LiveData.BANKROLL
GAME -> LiveData.GAME GAME -> LiveData.GAME
LOCATION -> LiveData.LOCATION LOCATION -> LiveData.LOCATION
TOURNAMENT_FEATURE -> LiveData.TOURNAMENT_FEATURE TOURNAMENT_TYPE -> LiveData.TOURNAMENT_TYPE
TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE
else -> null else -> null
} }

@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/white_transparent"/> <solid android:color="@color/white_transparent"/>
<size android:height="0.5dp"/> <size android:height="1dp"/>
</shape> </shape>

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
@ -8,6 +9,7 @@
android:id="@+id/dataListFragment" android:id="@+id/dataListFragment"
android:name="net.pokeranalytics.android.ui.fragment.DataListFragment" android:name="net.pokeranalytics.android.ui.fragment.DataListFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
tools:layout="@layout/fragment_data_list" />
</LinearLayout> </LinearLayout>

@ -2,12 +2,14 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"> android:orientation="vertical">
<fragment <fragment
android:id="@+id/editableDataFragment" android:id="@+id/editableDataFragment"
android:name="net.pokeranalytics.android.ui.fragment.EditableDataFragment" android:name="net.pokeranalytics.android.ui.fragment.EditableDataFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
tools:layout="@layout/fragment_editable_data" />
</LinearLayout> </LinearLayout>

@ -2,12 +2,14 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"> android:orientation="vertical">
<fragment <fragment
android:id="@+id/newSessionFragment" android:id="@+id/newSessionFragment"
android:name="net.pokeranalytics.android.ui.fragment.SessionFragment" android:name="net.pokeranalytics.android.ui.fragment.SessionFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
tools:layout="@layout/fragment_session" />
</LinearLayout> </LinearLayout>

@ -1,36 +1,72 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
android:clipToPadding="false"
android:paddingBottom="96dp"
tools:listitem="@layout/row_title"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBar"
android:layout_width="match_parent"
android:layout_height="128dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:collapsedTitleTextAppearance="@style/PokerAnalyticsTheme.Toolbar.CollapsedTitleAppearance"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleGravity="bottom"
app:expandedTitleMarginStart="72dp"
app:expandedTitleTextAppearance="@style/PokerAnalyticsTheme.Toolbar.ExpandedTitleAppearance"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:title="Poker Analytics"
app:titleTextColor="@color/white" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
tools:text="Data List"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" />
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addButton" android:id="@+id/addButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:src="@drawable/ic_add" android:src="@drawable/ic_add"
@ -39,4 +75,4 @@
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

@ -135,12 +135,10 @@
app:titleTextColor="@color/white" app:titleTextColor="@color/white"
tools:title="Poker Analytics" /> tools:title="Poker Analytics" />
</com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton" android:id="@+id/floatingActionButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"

Loading…
Cancel
Save