From 6570d4400ba45b42c79255ec87677a36b9c3dc87 Mon Sep 17 00:00:00 2001 From: konstantiniiv Date: Mon, 18 Nov 2019 08:16:12 +0300 Subject: [PATCH] update ui model in adapter and fragment --- .../anytype/ui/table/DatabaseViewFragment.kt | 20 ++++- .../anytype/ui/table/TableAdapter.kt | 76 ++++++++++--------- .../ui/table/holder/CellDateViewHolder.kt | 4 - .../ui/table/holder/CellNameViewHolder.kt | 4 - app/src/main/res/layout/fragment_row.xml | 16 ++++ app/src/main/res/layout/fragment_table.xml | 35 ++++++++- .../databaseview/DatabaseViewModel.kt | 8 +- 7 files changed, 112 insertions(+), 51 deletions(-) create mode 100644 app/src/main/res/layout/fragment_row.xml diff --git a/app/src/main/java/com/agileburo/anytype/ui/table/DatabaseViewFragment.kt b/app/src/main/java/com/agileburo/anytype/ui/table/DatabaseViewFragment.kt index 314f58ff1d..4a9a672e62 100644 --- a/app/src/main/java/com/agileburo/anytype/ui/table/DatabaseViewFragment.kt +++ b/app/src/main/java/com/agileburo/anytype/ui/table/DatabaseViewFragment.kt @@ -2,20 +2,22 @@ package com.agileburo.anytype.ui.table import android.os.Bundle import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProviders import com.agileburo.anytype.R import com.agileburo.anytype.core_utils.ui.ViewState import com.agileburo.anytype.di.common.componentManager -import com.agileburo.anytype.domain.database.model.DatabaseView import com.agileburo.anytype.presentation.databaseview.DatabaseViewModel import com.agileburo.anytype.presentation.databaseview.DatabaseViewModelFactory +import com.agileburo.anytype.presentation.databaseview.models.Table import com.agileburo.anytype.ui.base.ViewStateFragment +import kotlinx.android.synthetic.main.fragment_table.* import timber.log.Timber import javax.inject.Inject const val TEST_ID = "1" -class DatabaseViewFragment : ViewStateFragment>(R.layout.fragment_table) { +class DatabaseViewFragment : ViewStateFragment>(R.layout.fragment_table) { @Inject lateinit var factory: DatabaseViewModelFactory @@ -32,9 +34,19 @@ class DatabaseViewFragment : ViewStateFragment>(R.layout vm.getDatabaseView(id = TEST_ID) } - override fun render(state: ViewState) { + override fun render(state: ViewState) { when (state) { - is ViewState.Success -> { Timber.d("Get database : ${state.data.content.view}")} + is ViewState.Init -> { + //Init view + + + } + + + is ViewState.Success -> { + + Timber.d("Get database : ${state.data}") + } } } diff --git a/app/src/main/java/com/agileburo/anytype/ui/table/TableAdapter.kt b/app/src/main/java/com/agileburo/anytype/ui/table/TableAdapter.kt index 07397dc62c..5a01ffe7d1 100644 --- a/app/src/main/java/com/agileburo/anytype/ui/table/TableAdapter.kt +++ b/app/src/main/java/com/agileburo/anytype/ui/table/TableAdapter.kt @@ -5,10 +5,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.agileburo.anytype.R -import com.agileburo.anytype.presentation.table.CellView -import com.agileburo.anytype.presentation.table.ColumnHeaderView -import com.agileburo.anytype.presentation.table.RowHeaderView -import com.agileburo.anytype.ui.table.holder.CellDateViewHolder +import com.agileburo.anytype.presentation.databaseview.models.Cell +import com.agileburo.anytype.presentation.databaseview.models.Column +import com.agileburo.anytype.presentation.databaseview.models.Row import com.agileburo.anytype.ui.table.holder.CellNameViewHolder import com.evrencoskun.tableview.adapter.AbstractTableAdapter import com.evrencoskun.tableview.adapter.recyclerview.holder.AbstractViewHolder @@ -18,7 +17,37 @@ private const val DATE_CELL_TYPE = 2 class TableAdapter(context: Context) : - AbstractTableAdapter(context) { + AbstractTableAdapter(context) { + + // -------------- Cell -------------------- + + override fun getCellItemViewType(position: Int): Int = 0 + + override fun onCreateCellViewHolder(parent: ViewGroup, viewType: Int): AbstractViewHolder = + LayoutInflater.from(parent.context).run { + CellNameViewHolder(this.inflate(R.layout.item_table_name_cell, parent, false)) +// when (viewType) { +// NAME_CELL_TYPE -> +// DATE_CELL_TYPE -> CellDateViewHolder( +// itemView = this.inflate(R.layout.item_table_date_cell, parent, false) +// ) +// else -> throw RuntimeException("Unknown cell type") +// } + } + + override fun onBindCellViewHolder( + holder: AbstractViewHolder?, + cellItemModel: Any?, + columnPosition: Int, + rowPosition: Int + ) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + + // -------------- Column -------------------- + + override fun getColumnHeaderItemViewType(position: Int): Int = 0 override fun onCreateColumnHeaderViewHolder( parent: ViewGroup?, @@ -35,6 +64,10 @@ class TableAdapter(context: Context) : TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } + // -------------- Row -------------------- + + override fun getRowHeaderItemViewType(position: Int): Int = 0 + override fun onBindRowHeaderViewHolder( holder: AbstractViewHolder?, rowHeaderItemModel: Any?, @@ -50,41 +83,16 @@ class TableAdapter(context: Context) : TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } - override fun getCellItemViewType(position: Int): Int { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - override fun onCreateCellViewHolder(parent: ViewGroup, viewType: Int): AbstractViewHolder = - LayoutInflater.from(parent.context).run { - when (viewType) { - NAME_CELL_TYPE -> CellNameViewHolder( - itemView = this.inflate(R.layout.item_table_name_cell, parent, false) - ) - DATE_CELL_TYPE -> CellDateViewHolder( - itemView = this.inflate(R.layout.item_table_date_cell, parent, false) - ) - else -> throw RuntimeException("Unknown cell type") - } - } + + override fun onCreateCornerView(): View { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } - override fun onBindCellViewHolder( - holder: AbstractViewHolder?, - cellItemModel: Any?, - columnPosition: Int, - rowPosition: Int - ) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - override fun getColumnHeaderItemViewType(position: Int): Int { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - override fun getRowHeaderItemViewType(position: Int): Int { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } + + } \ No newline at end of file diff --git a/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellDateViewHolder.kt b/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellDateViewHolder.kt index e41f6a0f4f..014c4cebf2 100644 --- a/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellDateViewHolder.kt +++ b/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellDateViewHolder.kt @@ -1,12 +1,8 @@ package com.agileburo.anytype.ui.table.holder import android.view.View -import com.agileburo.anytype.presentation.table.CellDateView import com.evrencoskun.tableview.adapter.recyclerview.holder.AbstractViewHolder class CellDateViewHolder(itemView: View) : AbstractViewHolder(itemView) { - fun bind(cell: CellDateView) { - - } } \ No newline at end of file diff --git a/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellNameViewHolder.kt b/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellNameViewHolder.kt index 292d20dd75..f0c9448c28 100644 --- a/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellNameViewHolder.kt +++ b/app/src/main/java/com/agileburo/anytype/ui/table/holder/CellNameViewHolder.kt @@ -1,12 +1,8 @@ package com.agileburo.anytype.ui.table.holder import android.view.View -import com.agileburo.anytype.presentation.table.CellNameView import com.evrencoskun.tableview.adapter.recyclerview.holder.AbstractViewHolder class CellNameViewHolder(itemView: View) : AbstractViewHolder(itemView) { - private fun setCell(cell: CellNameView) { - - } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_row.xml b/app/src/main/res/layout/fragment_row.xml new file mode 100644 index 0000000000..faf3ff20f2 --- /dev/null +++ b/app/src/main/res/layout/fragment_row.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_table.xml b/app/src/main/res/layout/fragment_table.xml index 46dab13d7a..b5fdcb3b7a 100644 --- a/app/src/main/res/layout/fragment_table.xml +++ b/app/src/main/res/layout/fragment_table.xml @@ -1,6 +1,7 @@ @@ -8,12 +9,42 @@ android:id="@+id/tableView" android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginTop="32dp" app:column_header_height="@dimen/table_column_header_height" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tvViewType" app:row_header_width="@dimen/table_row_header_width" /> + + + + \ No newline at end of file diff --git a/presentation/src/main/java/com/agileburo/anytype/presentation/databaseview/DatabaseViewModel.kt b/presentation/src/main/java/com/agileburo/anytype/presentation/databaseview/DatabaseViewModel.kt index 67088fa7a1..076d1eeb96 100644 --- a/presentation/src/main/java/com/agileburo/anytype/presentation/databaseview/DatabaseViewModel.kt +++ b/presentation/src/main/java/com/agileburo/anytype/presentation/databaseview/DatabaseViewModel.kt @@ -6,18 +6,20 @@ import androidx.lifecycle.viewModelScope import com.agileburo.anytype.core_utils.ui.ViewState import com.agileburo.anytype.core_utils.ui.ViewStateViewModel import com.agileburo.anytype.domain.database.interactor.GetDatabase -import com.agileburo.anytype.domain.database.model.DatabaseView +import com.agileburo.anytype.presentation.databaseview.mapper.toPresentation +import com.agileburo.anytype.presentation.databaseview.models.Table import timber.log.Timber class DatabaseViewModel( private val getDatabase: GetDatabase -) : ViewStateViewModel>() { +) : ViewStateViewModel>() { fun getDatabaseView(id: String) { getDatabase.invoke(viewModelScope, GetDatabase.Params(id)) { result -> result.either( fnL = { e -> Timber.e("Error while getting database for id=$id ${e.message}") }, - fnR = { stateData.postValue(ViewState.Success(it)) } + fnR = { + stateData.postValue(ViewState.Success(it.toPresentation())) } ) } }