134 lines
4.5 KiB
Kotlin
134 lines
4.5 KiB
Kotlin
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
|
|
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() {
|
|
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() {
|
|
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
|
|
}
|
|
}
|