Quellcode durchsuchen

Added context and resources extension properties for CommonView

Vadik Sirekanyan vor 5 Jahren
Ursprung
Commit
c8e4475fcc

+ 2 - 1
app/src/main/java/com/sirekanyan/knigopis/common/android/adapter/CommonViewHolder.kt

@@ -2,8 +2,9 @@ package com.sirekanyan.knigopis.common.android.adapter
 
 import android.view.View
 import androidx.recyclerview.widget.RecyclerView
+import com.sirekanyan.knigopis.common.android.toast.CommonView
 
-abstract class CommonViewHolder<T>(view: View) : RecyclerView.ViewHolder(view) {
+abstract class CommonViewHolder<T>(view: View) : RecyclerView.ViewHolder(view), CommonView {
 
     protected var model: T? = null
 

+ 10 - 2
app/src/main/java/com/sirekanyan/knigopis/common/extensions/CommonView.kt

@@ -1,14 +1,22 @@
 package com.sirekanyan.knigopis.common.extensions
 
+import android.content.Context
+import android.content.res.Resources
 import com.google.android.material.snackbar.Snackbar
 import com.sirekanyan.knigopis.common.android.toast.CommonView
 
+val CommonView.context: Context
+    get() = containerView.context
+
+val CommonView.resources: Resources
+    get() = containerView.resources
+
 fun CommonView.toast(messageId: Int, vararg args: Any) {
-    containerView.context.showToast(messageId, *args)
+    context.showToast(messageId, *args)
 }
 
 fun CommonView.toast(messageId: Int) {
-    containerView.context.showToast(messageId)
+    context.showToast(messageId)
 }
 
 fun CommonView.snackbar(messageId: Int) {

+ 3 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/MainView.kt

@@ -6,6 +6,8 @@ import android.view.View
 import androidx.appcompat.app.AlertDialog
 import com.sirekanyan.knigopis.BuildConfig
 import com.sirekanyan.knigopis.R
+import com.sirekanyan.knigopis.common.android.toast.CommonView
+import com.sirekanyan.knigopis.common.extensions.context
 import com.sirekanyan.knigopis.common.extensions.hide
 import com.sirekanyan.knigopis.common.extensions.isNightMode
 import com.sirekanyan.knigopis.common.extensions.show
@@ -24,7 +26,7 @@ import kotlinx.android.synthetic.main.users_page.*
 
 private val DEBUG_OPTIONS = arrayOf(R.id.debug_option_clear_cache, R.id.debug_option_toggle_theme)
 
-interface MainView {
+interface MainView : CommonView {
 
     fun showAboutDialog()
     fun showPage(tab: CurrentTab)
@@ -53,7 +55,6 @@ class MainViewImpl(
     private val callbacks: MainView.Callbacks
 ) : MainView, LayoutContainer {
 
-    private val context = containerView.context
     private val loginOption: MenuItem
     private val profileOption: MenuItem
 

+ 3 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/ProgressView.kt

@@ -2,12 +2,14 @@ package com.sirekanyan.knigopis.feature
 
 import android.view.View
 import com.sirekanyan.knigopis.R
+import com.sirekanyan.knigopis.common.android.toast.CommonView
 import com.sirekanyan.knigopis.common.extensions.hide
+import com.sirekanyan.knigopis.common.extensions.resources
 import com.sirekanyan.knigopis.common.extensions.show
 import kotlinx.android.extensions.LayoutContainer
 import kotlinx.android.synthetic.main.activity_main.*
 
-interface ProgressView {
+interface ProgressView : CommonView {
 
     fun showProgress()
     fun hideProgress()
@@ -25,7 +27,6 @@ class ProgressViewImpl(
 ) : ProgressView,
     LayoutContainer {
 
-    private val resources = containerView.resources
     private val startOffset = resources.getDimensionPixelSize(R.dimen.swipe_refresh_start_offset)
     private val endOffset = resources.getDimensionPixelSize(R.dimen.swipe_refresh_end_offset)
 

+ 0 - 1
app/src/main/java/com/sirekanyan/knigopis/feature/book/BookView.kt

@@ -42,7 +42,6 @@ class BookViewImpl(
 ) : BookView,
     LayoutContainer {
 
-    private val context = containerView.context
     private val saveMenuItem: MenuItem
     private val progressMenuItem: MenuItem
     private val bookAction = initialBook.action

+ 0 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/books/BookDataViewHolder.kt

@@ -15,8 +15,6 @@ class BookDataViewHolder(
 ) : CommonViewHolder<BookModel>(containerView),
     LayoutContainer {
 
-    private val resources = containerView.resources
-
     init {
         containerView.setOnClickListener {
             model?.let { book ->

+ 1 - 5
app/src/main/java/com/sirekanyan/knigopis/feature/books/BooksView.kt

@@ -9,9 +9,7 @@ import com.sirekanyan.knigopis.common.android.header.HeaderItemDecoration
 import com.sirekanyan.knigopis.common.android.header.StickyHeaderImpl
 import com.sirekanyan.knigopis.common.android.recycler.BottomOffsetItemDecoration
 import com.sirekanyan.knigopis.common.android.toast.CommonView
-import com.sirekanyan.knigopis.common.extensions.getFullTitleString
-import com.sirekanyan.knigopis.common.extensions.hide
-import com.sirekanyan.knigopis.common.extensions.show
+import com.sirekanyan.knigopis.common.extensions.*
 import com.sirekanyan.knigopis.common.functions.handleError
 import com.sirekanyan.knigopis.feature.ProgressView
 import com.sirekanyan.knigopis.model.BookDataModel
@@ -45,8 +43,6 @@ class BooksViewImpl(
     private val dialogs: DialogFactory
 ) : BooksView, LayoutContainer, ProgressView by progressView {
 
-    private val context = containerView.context
-    private val resources = context.resources
     private val booksAdapter = BooksAdapter(callbacks::onBookClicked, callbacks::onBookLongClicked)
 
     init {

+ 3 - 3
app/src/main/java/com/sirekanyan/knigopis/feature/login/LoginView.kt

@@ -4,13 +4,15 @@ import android.view.View
 import android.view.ViewGroup
 import androidx.appcompat.app.AlertDialog
 import com.sirekanyan.knigopis.R
+import com.sirekanyan.knigopis.common.android.toast.CommonView
+import com.sirekanyan.knigopis.common.extensions.context
 import com.sirekanyan.knigopis.common.extensions.inflate
 import kotlinx.android.extensions.LayoutContainer
 import kotlinx.android.synthetic.main.default_app_bar.*
 import kotlinx.android.synthetic.main.login_activity.*
 import kotlinx.android.synthetic.main.website_layout.view.*
 
-interface LoginView {
+interface LoginView : CommonView {
 
     fun addWebsite(website: Website)
     fun showNoBrowserDialog()
@@ -31,8 +33,6 @@ class LoginViewImpl(
 ) : LoginView,
     LayoutContainer {
 
-    private val context = containerView.context
-
     init {
         toolbar.setTitle(R.string.login_title)
         toolbar.setNavigationIcon(R.drawable.ic_arrow_back)

+ 3 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/notes/NotesView.kt

@@ -3,6 +3,7 @@ package com.sirekanyan.knigopis.feature.notes
 import android.view.View
 import com.sirekanyan.knigopis.common.android.recycler.BottomOffsetItemDecoration
 import com.sirekanyan.knigopis.common.android.recycler.TopOffsetItemDecoration
+import com.sirekanyan.knigopis.common.extensions.context
 import com.sirekanyan.knigopis.common.extensions.hide
 import com.sirekanyan.knigopis.common.extensions.keepOnTop
 import com.sirekanyan.knigopis.common.extensions.show
@@ -36,8 +37,8 @@ class NotesViewImpl(
 
     init {
         notesRecyclerView.adapter = notesAdapter
-        notesRecyclerView.addItemDecoration(TopOffsetItemDecoration(containerView.context))
-        notesRecyclerView.addItemDecoration(BottomOffsetItemDecoration(containerView.context))
+        notesRecyclerView.addItemDecoration(TopOffsetItemDecoration(context))
+        notesRecyclerView.addItemDecoration(BottomOffsetItemDecoration(context))
     }
 
     override fun updateNotes(notes: List<NoteModel>) {

+ 1 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/profile/ProfileView.kt

@@ -47,7 +47,6 @@ class ProfileViewImpl(
 ) : ProfileView,
     LayoutContainer {
 
-    private val context = containerView.context
     private lateinit var editOption: MenuItem
     override val isEditMode get() = profileNicknameSwitcher.displayedChild == 1
     override val isProfileChanged get() = profileNickname.text.toString() != profileNicknameEditText.text.toString()
@@ -157,7 +156,7 @@ class ProfileViewImpl(
         randomProfileBook.alpha = 1f
         randomProfileBook.text = context.getString(
             R.string.profile_text_random,
-            context.resources.getTitleString(book.title),
+            resources.getTitleString(book.title),
             book.priority
         )
         randomProfileBook.animate()

+ 1 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/user/UserView.kt

@@ -49,7 +49,6 @@ class UserViewImpl(
 ) : UserView,
     LayoutContainer {
 
-    private val context = containerView.context
     private val unsubscribeOption: MenuItem
     private val booksAdapter = UserBooksAdapter(callbacks::onBookLongClicked)
 
@@ -124,7 +123,7 @@ class UserViewImpl(
 
     override fun showActionsDialog(title: String, author: String, book: BookDataModel) {
         dialogs.showDialog(
-            context.resources.getFullTitleString(book.title, book.author),
+            resources.getFullTitleString(book.title, book.author),
             createDialogItem(R.string.user_button_todo, R.drawable.ic_playlist_add) {
                 callbacks.onTodoActionClicked(book)
             },

+ 3 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/users/UsersView.kt

@@ -6,6 +6,7 @@ import com.sirekanyan.knigopis.common.android.dialog.DialogItem
 import com.sirekanyan.knigopis.common.android.dialog.createDialogItem
 import com.sirekanyan.knigopis.common.android.recycler.BottomOffsetItemDecoration
 import com.sirekanyan.knigopis.common.android.recycler.TopOffsetItemDecoration
+import com.sirekanyan.knigopis.common.extensions.context
 import com.sirekanyan.knigopis.common.extensions.hide
 import com.sirekanyan.knigopis.common.extensions.keepOnTop
 import com.sirekanyan.knigopis.common.extensions.show
@@ -44,8 +45,8 @@ class UsersViewImpl(
 
     init {
         usersRecyclerView.adapter = usersAdapter
-        usersRecyclerView.addItemDecoration(TopOffsetItemDecoration(containerView.context))
-        usersRecyclerView.addItemDecoration(BottomOffsetItemDecoration(containerView.context))
+        usersRecyclerView.addItemDecoration(TopOffsetItemDecoration(context))
+        usersRecyclerView.addItemDecoration(BottomOffsetItemDecoration(context))
     }
 
     override fun updateUsers(users: List<UserModel>) {