Ver código fonte

Added callbacks for opening user screen

sirekanyan 7 anos atrás
pai
commit
4818ec35f3

+ 16 - 2
app/src/main/java/me/vadik/knigopis/MainActivity.kt

@@ -2,6 +2,7 @@ package me.vadik.knigopis
 
 import android.Manifest.permission.READ_PHONE_STATE
 import android.content.Intent
+import android.content.Intent.ACTION_VIEW
 import android.net.Uri
 import android.os.Bundle
 import android.provider.Settings
@@ -27,6 +28,7 @@ import me.vadik.knigopis.auth.KAuth
 import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.model.*
 import me.vadik.knigopis.model.CurrentTab.*
+import me.vadik.knigopis.model.note.Identity
 import me.vadik.knigopis.model.note.Note
 import me.vadik.knigopis.model.subscription.Subscription
 import retrofit2.HttpException
@@ -53,8 +55,8 @@ class MainActivity : AppCompatActivity(), Router {
         )
     }
     private val allBooksAdapter by lazy { booksAdapter.build(allBooks) }
-    private val usersAdapter by lazy { UsersAdapter(allUsers) }
-    private val notesAdapter by lazy { NotesAdapter(allNotes) }
+    private val usersAdapter by lazy { UsersAdapter(allUsers, this) }
+    private val notesAdapter by lazy { NotesAdapter(allNotes, this) }
     private val navigation by lazy {
         findView<BottomNavigationView>(R.id.navigation).apply {
             visibility = if (config.isDevMode()) View.VISIBLE else View.GONE
@@ -127,6 +129,18 @@ class MainActivity : AppCompatActivity(), Router {
         }
     }
 
+    override fun openUserScreen(user: Subscription) {
+    }
+
+    override fun openUserScreen(user: Identity) {
+    }
+
+    override fun openBrowser(uri: Uri) {
+        startActivityOrElse(Intent(ACTION_VIEW, uri)) {
+            toast("Невозможно открыть страницу")
+        }
+    }
+
     private fun initNavigationView() {
         refresh(HOME_TAB)
         navigation.setOnNavigationItemSelectedListener { item ->

+ 6 - 0
app/src/main/java/me/vadik/knigopis/Router.kt

@@ -1,7 +1,13 @@
 package me.vadik.knigopis
 
+import android.net.Uri
 import me.vadik.knigopis.model.Book
+import me.vadik.knigopis.model.note.Identity
+import me.vadik.knigopis.model.subscription.Subscription
 
 interface Router {
     fun openEditBookScreen(book: Book)
+    fun openUserScreen(user: Subscription)
+    fun openUserScreen(user: Identity)
+    fun openBrowser(uri: Uri)
 }

+ 2 - 2
app/src/main/java/me/vadik/knigopis/adapters/notes/NoteViewHolder.kt

@@ -1,10 +1,10 @@
-package me.vadik.knigopis.adapters.users
+package me.vadik.knigopis.adapters.notes
 
 import android.support.v7.widget.RecyclerView
 import android.view.View
 import kotlinx.android.synthetic.main.note.view.*
 
-class NoteViewHolder(private val view: View) : RecyclerView.ViewHolder(view) {
+class NoteViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
 
     var nickname: String
         get() = view.userNickname.text.toString()

+ 6 - 2
app/src/main/java/me/vadik/knigopis/adapters/notes/NotesAdapter.kt

@@ -3,12 +3,13 @@ package me.vadik.knigopis.adapters.notes
 import android.support.v7.widget.RecyclerView
 import android.view.ViewGroup
 import me.vadik.knigopis.R
-import me.vadik.knigopis.adapters.users.NoteViewHolder
+import me.vadik.knigopis.Router
 import me.vadik.knigopis.inflate
 import me.vadik.knigopis.model.note.Note
 
 class NotesAdapter(
-    private val notes: List<Note>
+    private val notes: List<Note>,
+    private val router: Router
 ) : RecyclerView.Adapter<NoteViewHolder>() {
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NoteViewHolder {
@@ -24,5 +25,8 @@ class NotesAdapter(
         val note = notes[position]
         holder.nickname = note.user.nickname
         holder.notes = "${note.notes} // \"${note.title}\" (${note.author})"
+        holder.view.setOnClickListener {
+            router.openUserScreen(note.user)
+        }
     }
 }

+ 2 - 2
app/src/main/java/me/vadik/knigopis/adapters/users/UserViewHolder.kt

@@ -8,13 +8,13 @@ import com.bumptech.glide.request.RequestOptions
 import kotlinx.android.synthetic.main.user.view.*
 import me.vadik.knigopis.R
 
-class UserViewHolder(private val view: View) : RecyclerView.ViewHolder(view) {
+class UserViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
 
     var avatarUrl: String? = null
         set(value) {
             field = value
             Glide.with(view.context)
-                .load(avatarUrl)
+                .load(value)
                 .apply(
                     RequestOptions.circleCropTransform()
                         .placeholder(R.drawable.oval_placeholder_background)

+ 6 - 1
app/src/main/java/me/vadik/knigopis/adapters/users/UsersAdapter.kt

@@ -3,11 +3,13 @@ package me.vadik.knigopis.adapters.users
 import android.support.v7.widget.RecyclerView
 import android.view.ViewGroup
 import me.vadik.knigopis.R
+import me.vadik.knigopis.Router
 import me.vadik.knigopis.inflate
 import me.vadik.knigopis.model.subscription.Subscription
 
 class UsersAdapter(
-    private val users: List<Subscription>
+    private val users: List<Subscription>,
+    private val router: Router
 ) : RecyclerView.Adapter<UserViewHolder>() {
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
@@ -27,5 +29,8 @@ class UsersAdapter(
             holder.nickname = nickname + " // " + booksRead
             holder.profile = profile ?: identity ?: ""
         }
+        holder.view.setOnClickListener {
+            router.openUserScreen(user)
+        }
     }
 }