|
|
|
|
@ -1,16 +1,131 @@ |
|
|
|
|
package net.pokeranalytics.android.ui.fragment.components.bottomsheet |
|
|
|
|
|
|
|
|
|
import android.content.Context |
|
|
|
|
import android.os.Bundle |
|
|
|
|
import android.view.LayoutInflater |
|
|
|
|
import android.view.View |
|
|
|
|
import androidx.recyclerview.widget.GridLayoutManager |
|
|
|
|
import kotlinx.android.synthetic.main.bottom_sheet_grid.* |
|
|
|
|
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* |
|
|
|
|
import net.pokeranalytics.android.ui.adapter.TableSizeGridAdapter |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.ui.adapter.components.* |
|
|
|
|
import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowViewType |
|
|
|
|
import net.pokeranalytics.android.util.px |
|
|
|
|
|
|
|
|
|
class TableSize(var numberOfPlayer:Int): RowRepresentable { |
|
|
|
|
companion object { |
|
|
|
|
val all = Array(8, init = |
|
|
|
|
{ index -> TableSize(index+2)}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override val resId: Int? |
|
|
|
|
get() { |
|
|
|
|
return if (this.numberOfPlayer == 2) { |
|
|
|
|
R.string.heads_up |
|
|
|
|
} else { |
|
|
|
|
R.string.max |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun localizedTitle(context: Context): String { |
|
|
|
|
this.resId?.let { |
|
|
|
|
return if (this.numberOfPlayer == 2) { |
|
|
|
|
context.getString(it) |
|
|
|
|
} else { |
|
|
|
|
"$this.numberOfPlayer$context.getString(it)" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return super.localizedTitle(context) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override val viewType: Int |
|
|
|
|
get() = RowViewType.TITLE_GRID.ordinal |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class BottomSheetTableSizeGridFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { |
|
|
|
|
|
|
|
|
|
private lateinit var dataAdapter: RowRepresentableAdapter |
|
|
|
|
private var defaultSize: Int? = null |
|
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
|
initData() |
|
|
|
|
initUI() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onResume() { |
|
|
|
|
super.onResume() |
|
|
|
|
dataAdapter.notifyDataSetChanged() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun getValue(): Any? { |
|
|
|
|
return defaultSize |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Init data |
|
|
|
|
*/ |
|
|
|
|
private fun initData() { |
|
|
|
|
|
|
|
|
|
val bottomSheetData = getData() |
|
|
|
|
if (bottomSheetData.isNotEmpty() && bottomSheetData.first().defaultValue != null) { |
|
|
|
|
defaultSize = bottomSheetData.first().defaultValue as Int? |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Init UI |
|
|
|
|
*/ |
|
|
|
|
private fun initUI() { |
|
|
|
|
|
|
|
|
|
setAddButtonVisible(false) |
|
|
|
|
|
|
|
|
|
LayoutInflater.from(requireContext()) |
|
|
|
|
.inflate(net.pokeranalytics.android.R.layout.bottom_sheet_grid, view?.bottomSheetContainer, true) |
|
|
|
|
|
|
|
|
|
val viewManager = GridLayoutManager(requireContext(), 3) |
|
|
|
|
dataAdapter = RowRepresentableAdapter(this, this) |
|
|
|
|
|
|
|
|
|
val spanCount = 3 |
|
|
|
|
val spacing = 2.px |
|
|
|
|
val includeEdge = false |
|
|
|
|
|
|
|
|
|
reyclerView.apply { |
|
|
|
|
setHasFixedSize(true) |
|
|
|
|
layoutManager = viewManager |
|
|
|
|
adapter = dataAdapter |
|
|
|
|
addItemDecoration(GridSpacingItemDecoration(spanCount, spacing, includeEdge)) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun rowRepresentableForPosition(position: Int): RowRepresentable { |
|
|
|
|
return TableSize.all[position] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun indexForRow(row: RowRepresentable): Int { |
|
|
|
|
return TableSize.all.indexOf(row) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun numberOfRows(): Int { |
|
|
|
|
return TableSize.all.size |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onRowSelected(row: RowRepresentable) { |
|
|
|
|
bottomSheetDelegate.setValue((this.row as TableSize).numberOfPlayer, this.row) |
|
|
|
|
dismiss() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun stringForRow(row: RowRepresentable): String { |
|
|
|
|
this.context?.let { |
|
|
|
|
return row.localizedTitle(it) |
|
|
|
|
} |
|
|
|
|
return "UNKNOWN CONTEXT FOR ROW $row" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
class BottomSheetTableSizeGridFragment : BottomSheetFragment() { |
|
|
|
|
|
|
|
|
|
private var dataList: ArrayList<String> = ArrayList() |
|
|
|
|
@ -79,4 +194,6 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment() { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
*/ |