Commit 12780d56 authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Add CustomDividerItemDecoration.kt and remove unused codes.

parent ad96c9db
package chat.rocket.android.chatrooms.ui package chat.rocket.android.chatrooms.ui
import android.content.Context
import android.graphics.Canvas
import android.graphics.drawable.Drawable
import android.os.Bundle import android.os.Bundle
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.support.v7.widget.DividerItemDecoration
import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -32,59 +35,49 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView { ...@@ -32,59 +35,49 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
presenter.getChatRooms() presenter.chatRooms()
} }
// // This is just a sample showing 8 chat rooms (aka user subscription). We need to get it rid in a real word. REMARK: remove this comment and this method.
// private fun createDumpData(): List<Chat> {
// val filipe = User("1", "Filipe Brito", "filipe.brito", "online", "https://open.rocket.chat/avatar/filipe.brito")
// val lucio = User("2", "Lucio Maciel", "Lucio Maciel", "busy", "https://open.rocket.chat/avatar/lucio.maciel")
// val leonardo = User("3", "Leonardo Aramaki", "leonardo.aramaki", "busy", "https://open.rocket.chat/avatar/leonardo.aramaki")
// val sing = User("4", "Filipe Brito", "filipe.brito", "online", "https://open.rocket.chat/avatar/filipe.brito")
// val hetal = User("5", "Filipe Brito", "filipe.brito", "online", "https://open.rocket.chat/avatar/filipe.brito")
// val matheus = User("6", "Filipe Brito", "filipe.brito", "online", "https://open.rocket.chat/avatar/filipe.brito")
// val bestrun = User("7", "Filipe Brito", "filipe.brito", "online", "https://open.rocket.chat/avatar/filipe.brito")
// val djc = User("8", "3djc", "3djc", "online", "https://open.rocket.chat/avatar/filipe.brito")
//
// val dumpChat1 = Chat(leonardo, "Leonardo Aramaki", "d", "Type something", LocalDateTime.of(2017, 11, 21, 1, 3), 1)
// val dumpChat2 = Chat(filipe, "Filipe Brito", "d", "Type something...Type something...Type something", LocalDateTime.of(2017, 11, 22, 1, 3), 150)
// val dumpChat3 = Chat(lucio, "Lucio Maciel", "d", "Type something", LocalDateTime.of(2017, 11, 17, 1, 3), 0)
// val dumpChat4 = Chat(sing, "mobile-internal", "p", "@aaron.ogle @rafael.kellermann same problem over here. Although all the servers show up on the selection.", LocalDateTime.of(2017, 11, 15, 1, 3), 0)
// val dumpChat5 = Chat(hetal, "general", "c", "Has joined the channel.", LocalDateTime.of(2017, 11, 13, 1, 3), 0)
// val dumpChat6 = Chat(matheus, "androidnativeapp", "c", "Yes @sttyru, but you'll need to implement from the ground up following the docs at docs.rocket.chat where you can see the REST (HTTP) and Real-Time (WebSockets) calls.", LocalDateTime.of(2017, 11, 14, 1, 3), 0)
// val dumpChat7 = Chat(bestrun, "androidnativeapp-2", "c", "Just downloaded .zip and imported into Android Studio then build the project.", LocalDateTime.of(2017, 11, 4, 12, 47), 0)
// val dumpChat8 = Chat(djc, "iosnativeapp", "c", "Ok, got confused by the blog announcement that shows a screenshot with github oAuth ! Sorry !", LocalDateTime.of(2017, 11, 4, 12, 43), 0)
//
// // creates a list of chat sorted by lastMessageDateTime attribute.
// return listOf(dumpChat1, dumpChat2, dumpChat3, dumpChat4, dumpChat5, dumpChat6, dumpChat7, dumpChat8).sortedByDescending { chat -> chat.lastMessageDateTime }
// }
// REMARK: The presenter should call this method. The presenter also need to sort the chat list by latest message (compared by its date).
// private fun showChatList(dataSet: List<Chat>) {
// activity?.apply {
// recycler_view.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
// recycler_view.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL))
// recycler_view.adapter = ChatRoomsAdapter(dataSet.toMutableList(), this)
// }
// }
override fun showChatRooms(dataSet: MutableList<ChatRoom>) { override fun showChatRooms(dataSet: MutableList<ChatRoom>) {
activity?.apply { activity?.apply {
recycler_view.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) recycler_view.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
recycler_view.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL)) recycler_view.addItemDecoration(CustomDividerItemDecoration(this, 144, 32))
recycler_view.adapter = ChatRoomsAdapter(dataSet, this) recycler_view.adapter = ChatRoomsAdapter(dataSet, this)
} }
} }
override fun showLoading() { override fun showLoading() = view_loading.show()
view_loading.show()
} override fun hideLoading() = view_loading.hide()
override fun showMessage(message: String) = Toast.makeText(activity, message, Toast.LENGTH_SHORT).show()
}
class CustomDividerItemDecoration(context: Context, private var boundStart: Int = 0, private var boundRight: Int = 0) : RecyclerView.ItemDecoration() {
private val attrs = intArrayOf(android.R.attr.listDivider)
private var divider: Drawable
override fun hideLoading() { init {
view_loading.hide() val styledAttributes = context.obtainStyledAttributes(attrs)
divider = styledAttributes.getDrawable(0)
styledAttributes.recycle()
} }
override fun showMessage(message: String) { override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
Toast.makeText(activity, message, Toast.LENGTH_SHORT).show() val left = parent.paddingLeft + boundStart
val right = (parent.width - parent.paddingRight) - boundRight
val childCount = parent.childCount
for (i in 0 until childCount) {
val child = parent.getChildAt(i)
val params = child.layoutParams as RecyclerView.LayoutParams
val top = child.bottom + params.bottomMargin
val bottom = top + divider.intrinsicHeight
divider.setBounds(left, top, right, bottom)
divider.draw(c)
}
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment