wedroid/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardsListsActivity.kt

134 lines
4.5 KiB
Kotlin
Raw Normal View History

package it.unisannio.ding.ids.wedroid.app.view
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import it.unisannio.ding.ids.wedroid.app.R
import it.unisannio.ding.ids.wedroid.app.util.PreferenceReader
import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper
import it.unisannio.ding.ids.wedroid.app.view.adapter.BoardsListAdapter
2020-01-08 14:39:33 +00:00
import it.unisannio.ding.ids.wedroid.app.viewModel.BoardsListViewModel
import it.unisannio.ding.ids.wedroid.wrapper.entity.BoardBackgroundColor
import kotlinx.android.synthetic.main.activity_boards_lists.*
import kotlinx.android.synthetic.main.content_boards_lists.*
import java.util.Locale
class BoardsListsActivity : AppCompatActivity() {
2019-11-30 13:43:52 +00:00
private lateinit var viewModel: BoardsListViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_boards_lists)
setSupportActionBar(toolbar)
val reader: PreferenceReader = SharedPreferenceHelper(this)
if (reader.token == "")
startActivityForResult(
Intent(this, LoginActivity::class.java),
LOGIN_CODE
)
else initializeUi()
}
private fun initializeUi() {
2019-11-30 13:43:52 +00:00
viewModel = ViewModelProvider(this).get(BoardsListViewModel::class.java)
val adapter = BoardsListAdapter(this)
boardList.adapter = adapter
boardList.layoutManager = LinearLayoutManager(this)
viewModel.allBoards.observe(this, Observer {
it.let { adapter.setBoards(it) }
pullToRefresh.isRefreshing = false
})
swipeLeftToDelete()
fab.setOnClickListener {
startActivityForResult(
Intent(this, NewBoardActivity::class.java),
NEW_BOARD_CODE
)
}
pullToRefresh.setColorSchemeColors(getColor(R.color.colorAccent))
pullToRefresh.setOnRefreshListener {
viewModel.refresh()
}
}
private fun swipeLeftToDelete() {
val swipeToDelete = ItemTouchHelper(
object : ItemTouchHelper.SimpleCallback(
0, ItemTouchHelper.LEFT
) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val pos = viewHolder.adapterPosition
viewModel.deleteBoard(pos)
}
})
swipeToDelete.attachToRecyclerView(boardList)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
LOGIN_CODE -> onLoginResult(resultCode)
NEW_BOARD_CODE -> if (data != null) onAddBoardResult(resultCode, data)
else -> finish()
}
}
private fun onLoginResult(resultCode: Int) {
when (resultCode) {
LoginActivity.LOGIN_OK -> initializeUi()
LoginActivity.LOGIN_ERROR -> finish()
else -> finish()
}
}
private fun onAddBoardResult(resultCode: Int, data: Intent) {
if (resultCode != NewBoardActivity.RESULT_OK) {
Toast.makeText(this, R.string.on_add_new_board_error, Toast.LENGTH_LONG)
.show()
return
}
val title = data.getStringExtra(NewBoardActivity.BOARD_NAME)
if (title == null) {
Toast.makeText(this, R.string.on_null_new_board_name, Toast.LENGTH_LONG)
.show()
return
}
val isPrivate = data.getBooleanExtra(NewBoardActivity.BOARD_PRIVATE, true)
val colorName = data.getStringExtra(NewBoardActivity.BOARD_BACKGROUND_COLOR) ?: "belize"
val backgroundColor = BoardBackgroundColor
.valueOf(colorName.toUpperCase(Locale.ROOT))
viewModel.insertBoard(title, isPrivate, backgroundColor)
}
companion object {
const val NEW_BOARD_CODE = 17
const val LOGIN_CODE = 19
}
}