Sfoglia il codice sorgente

Theme SharedItemsActivity

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 anni fa
parent
commit
4de7d06e8e

+ 1 - 21
app/src/main/java/com/nextcloud/talk/remotefilebrowser/adapters/RemoteFileBrowserItemsListViewHolder.kt

@@ -20,10 +20,8 @@
 
 package com.nextcloud.talk.remotefilebrowser.adapters
 
-import android.graphics.drawable.Drawable
 import android.text.format.Formatter
 import android.view.View
-import androidx.appcompat.content.res.AppCompatResources
 import autodagger.AutoInjector
 import com.facebook.drawee.backends.pipeline.Fresco
 import com.facebook.drawee.interfaces.DraweeController
@@ -38,7 +36,6 @@ import com.nextcloud.talk.ui.theme.ViewThemeUtils
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.DateUtils.getLocalDateTimeStringFromTimestamp
 import com.nextcloud.talk.utils.DisplayUtils
-import com.nextcloud.talk.utils.DrawableUtils.getDrawableResourceIdForMimeType
 import com.nextcloud.talk.utils.Mimetype.FOLDER
 
 @AutoInjector(NextcloudTalkApplication::class)
@@ -101,7 +98,7 @@ class RemoteFileBrowserItemsListViewHolder(
         binding.fileIcon
             .hierarchy
             .setPlaceholderImage(
-                getPlaceholderImage(item)
+                viewThemeUtils.getPlaceholderImage(binding.root.context, item.mimeType)
             )
 
         if (item.hasPreview) {
@@ -129,19 +126,6 @@ class RemoteFileBrowserItemsListViewHolder(
         binding.selectFileCheckbox.isChecked = selectionInterface.isPathSelected(item.path!!)
     }
 
-    private fun getPlaceholderImage(item: RemoteFileBrowserItem): Drawable? {
-        val drawableResourceId = getDrawableResourceIdForMimeType(item.mimeType)
-        val context = binding.fileIcon.context
-        val drawable = AppCompatResources.getDrawable(
-            context,
-            drawableResourceId
-        )
-        if (drawable != null && THEMEABLE_PLACEHOLDER_IDS.contains(drawableResourceId)) {
-            viewThemeUtils.colorDrawable(context, drawable)
-        }
-        return drawable
-    }
-
     private fun setSelectability() {
         if (selectable) {
             binding.selectFileCheckbox.visibility = View.VISIBLE
@@ -164,9 +148,5 @@ class RemoteFileBrowserItemsListViewHolder(
     companion object {
         private const val DISABLED_ALPHA: Float = 0.38f
         private const val ENABLED_ALPHA: Float = 1.0f
-        private val THEMEABLE_PLACEHOLDER_IDS = listOf(
-            R.drawable.ic_mimetype_package_x_generic,
-            R.drawable.ic_mimetype_folder
-        )
     }
 }

+ 11 - 3
app/src/main/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivity.kt

@@ -41,6 +41,7 @@ import com.nextcloud.talk.databinding.ActivitySharedItemsBinding
 import com.nextcloud.talk.shareditems.adapters.SharedItemsAdapter
 import com.nextcloud.talk.shareditems.model.SharedItemType
 import com.nextcloud.talk.shareditems.viewmodels.SharedItemsViewModel
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_CONVERSATION_NAME
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
@@ -53,6 +54,9 @@ class SharedItemsActivity : AppCompatActivity() {
     @Inject
     lateinit var viewModelFactory: ViewModelProvider.Factory
 
+    @Inject
+    lateinit var viewThemeUtils: ViewThemeUtils
+
     private lateinit var binding: ActivitySharedItemsBinding
     private lateinit var viewModel: SharedItemsViewModel
 
@@ -72,7 +76,9 @@ class SharedItemsActivity : AppCompatActivity() {
         DisplayUtils.applyColorToStatusBar(
             this,
             ResourcesCompat.getColor(
-                resources, R.color.appbar, null
+                resources,
+                R.color.appbar,
+                null
             )
         )
         DisplayUtils.applyColorToNavigationBar(
@@ -130,7 +136,8 @@ class SharedItemsActivity : AppCompatActivity() {
                     showGrid,
                     user,
                     roomToken,
-                    isUserConversationOwnerOrModerator
+                    isUserConversationOwnerOrModerator,
+                    viewThemeUtils
                 ).apply {
                     items = sharedMediaItems.items
                 }
@@ -142,6 +149,8 @@ class SharedItemsActivity : AppCompatActivity() {
             }
             else -> {}
         }
+
+        viewThemeUtils.colorTabLayout(binding.sharedItemsTabs)
     }
 
     private fun clearEmptyLoading() {
@@ -161,7 +170,6 @@ class SharedItemsActivity : AppCompatActivity() {
     }
 
     private fun initTabs(sharedItemTypes: Set<SharedItemType>) {
-
         binding.sharedItemsTabs.removeAllTabs()
 
         if (sharedItemTypes.contains(SharedItemType.MEDIA)) {

+ 7 - 4
app/src/main/java/com/nextcloud/talk/shareditems/adapters/SharedItemsAdapter.kt

@@ -37,18 +37,19 @@ import com.nextcloud.talk.shareditems.model.SharedItem
 import com.nextcloud.talk.shareditems.model.SharedLocationItem
 import com.nextcloud.talk.shareditems.model.SharedOtherItem
 import com.nextcloud.talk.shareditems.model.SharedPollItem
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
 
 class SharedItemsAdapter(
     private val showGrid: Boolean,
     private val user: User,
     private val roomToken: String,
-    private val isUserConversationOwnerOrModerator: Boolean
+    private val isUserConversationOwnerOrModerator: Boolean,
+    private val viewThemeUtils: ViewThemeUtils
 ) : RecyclerView.Adapter<SharedItemsViewHolder>() {
 
     var items: List<SharedItem> = emptyList()
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SharedItemsViewHolder {
-
         return if (showGrid) {
             SharedItemsGridViewHolder(
                 SharedItemGridBinding.inflate(
@@ -56,7 +57,8 @@ class SharedItemsAdapter(
                     parent,
                     false
                 ),
-                user
+                user,
+                viewThemeUtils
             )
         } else {
             SharedItemsListViewHolder(
@@ -65,7 +67,8 @@ class SharedItemsAdapter(
                     parent,
                     false
                 ),
-                user
+                user,
+                viewThemeUtils
             )
         }
     }

+ 4 - 2
app/src/main/java/com/nextcloud/talk/shareditems/adapters/SharedItemsGridViewHolder.kt

@@ -27,11 +27,13 @@ import android.widget.ProgressBar
 import com.facebook.drawee.view.SimpleDraweeView
 import com.nextcloud.talk.data.user.model.User
 import com.nextcloud.talk.databinding.SharedItemGridBinding
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
 
 class SharedItemsGridViewHolder(
     override val binding: SharedItemGridBinding,
-    user: User
-) : SharedItemsViewHolder(binding, user) {
+    user: User,
+    viewThemeUtils: ViewThemeUtils
+) : SharedItemsViewHolder(binding, user, viewThemeUtils) {
 
     override val image: SimpleDraweeView
         get() = binding.image

+ 5 - 3
app/src/main/java/com/nextcloud/talk/shareditems/adapters/SharedItemsListViewHolder.kt

@@ -38,11 +38,14 @@ import com.nextcloud.talk.shareditems.model.SharedItem
 import com.nextcloud.talk.shareditems.model.SharedLocationItem
 import com.nextcloud.talk.shareditems.model.SharedOtherItem
 import com.nextcloud.talk.shareditems.model.SharedPollItem
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
+import com.nextcloud.talk.utils.DateUtils
 
 class SharedItemsListViewHolder(
     override val binding: SharedItemListBinding,
-    user: User
-) : SharedItemsViewHolder(binding, user) {
+    user: User,
+    viewThemeUtils: ViewThemeUtils
+) : SharedItemsViewHolder(binding, user, viewThemeUtils) {
 
     override val image: SimpleDraweeView
         get() = binding.fileImage
@@ -52,7 +55,6 @@ class SharedItemsListViewHolder(
         get() = binding.progressBar
 
     override fun onBind(item: SharedFileItem) {
-
         super.onBind(item)
 
         binding.fileName.text = item.name

+ 4 - 13
app/src/main/java/com/nextcloud/talk/shareditems/adapters/SharedItemsViewHolder.kt

@@ -28,7 +28,6 @@ import android.net.Uri
 import android.util.Log
 import android.view.View
 import android.widget.ProgressBar
-import androidx.core.content.ContextCompat
 import androidx.recyclerview.widget.RecyclerView
 import androidx.viewbinding.ViewBinding
 import com.facebook.drawee.backends.pipeline.Fresco
@@ -43,16 +42,17 @@ import com.nextcloud.talk.data.user.model.User
 import com.nextcloud.talk.shareditems.model.SharedDeckCardItem
 import com.nextcloud.talk.shareditems.model.SharedFileItem
 import com.nextcloud.talk.shareditems.model.SharedItem
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
 import com.nextcloud.talk.shareditems.model.SharedLocationItem
 import com.nextcloud.talk.shareditems.model.SharedOtherItem
 import com.nextcloud.talk.shareditems.model.SharedPollItem
 import com.nextcloud.talk.utils.ApiUtils
-import com.nextcloud.talk.utils.DrawableUtils
 import com.nextcloud.talk.utils.FileViewerUtils
 
 abstract class SharedItemsViewHolder(
     open val binding: ViewBinding,
-    internal val user: User
+    internal val user: User,
+    private val viewThemeUtils: ViewThemeUtils
 ) : RecyclerView.ViewHolder(binding.root) {
 
     companion object {
@@ -71,7 +71,7 @@ abstract class SharedItemsViewHolder(
     )
 
     open fun onBind(item: SharedFileItem) {
-        image.hierarchy.setPlaceholderImage(staticImage(item.mimeType, image))
+        image.hierarchy.setPlaceholderImage(viewThemeUtils.getPlaceholderImage(image.context, item.mimeType))
         if (item.previewAvailable) {
             image.controller = configurePreview(item)
         }
@@ -107,7 +107,6 @@ abstract class SharedItemsViewHolder(
     }
 
     private fun configurePreview(item: SharedFileItem): DraweeController {
-
         val imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(item.previewLink))
             .setProgressiveRenderingEnabled(true)
             .setRotationOptions(RotationOptions.autoRotate())
@@ -136,12 +135,4 @@ abstract class SharedItemsViewHolder(
     open fun onBind(item: SharedOtherItem) {}
 
     open fun onBind(item: SharedDeckCardItem) {}
-
-    private fun staticImage(
-        mimeType: String?,
-        image: SimpleDraweeView
-    ): Drawable {
-        val drawableResourceId = DrawableUtils.getDrawableResourceIdForMimeType(mimeType)
-        return ContextCompat.getDrawable(image.context, drawableResourceId)!!
-    }
 }

+ 28 - 0
app/src/main/java/com/nextcloud/talk/ui/theme/ViewThemeUtils.kt

@@ -30,6 +30,7 @@ import android.view.View
 import android.widget.CheckBox
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.appcompat.content.res.AppCompatResources
 import androidx.appcompat.widget.SwitchCompat
 import androidx.core.content.res.ResourcesCompat
 import androidx.core.view.children
@@ -37,8 +38,10 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
 import com.google.android.material.button.MaterialButton
 import com.google.android.material.card.MaterialCardView
 import com.google.android.material.floatingactionbutton.FloatingActionButton
+import com.google.android.material.tabs.TabLayout
 import com.google.android.material.textfield.TextInputLayout
 import com.nextcloud.talk.R
+import com.nextcloud.talk.utils.DrawableUtils
 import com.yarolegovich.mp.MaterialPreferenceCategory
 import com.yarolegovich.mp.MaterialSwitchPreference
 import javax.inject.Inject
@@ -197,4 +200,29 @@ class ViewThemeUtils @Inject constructor(val theme: ServerTheme) {
             textInputLayout.boxStrokeColor = color
         }
     }
+
+    fun colorTabLayout(tabLayout: TabLayout) {
+        withElementColor(tabLayout) { color ->
+            tabLayout.setSelectedTabIndicatorColor(color)
+        }
+    }
+
+    fun getPlaceholderImage(context: Context, mimetype: String?): Drawable? {
+        val drawableResourceId = DrawableUtils.getDrawableResourceIdForMimeType(mimetype)
+        val drawable = AppCompatResources.getDrawable(
+            context,
+            drawableResourceId
+        )
+        if (drawable != null && THEMEABLE_PLACEHOLDER_IDS.contains(drawableResourceId)) {
+            colorDrawable(context, drawable)
+        }
+        return drawable
+    }
+
+    companion object {
+        private val THEMEABLE_PLACEHOLDER_IDS = listOf(
+            R.drawable.ic_mimetype_package_x_generic,
+            R.drawable.ic_mimetype_folder
+        )
+    }
 }