mirror of
https://github.com/Michatec/michas-droid.git
synced 2026-05-30 18:02:43 +02:00
Migrate from Coil to Picasso
This commit is contained in:
+1
-1
@@ -122,5 +122,5 @@ dependencies {
|
||||
implementation 'io.reactivex.rxjava3:rxjava:3.0.4'
|
||||
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
|
||||
implementation 'com.fasterxml.jackson.core:jackson-core:2.11.0'
|
||||
implementation 'io.coil-kt:coil:0.11.0'
|
||||
implementation 'com.squareup.picasso:picasso:2.71828'
|
||||
}
|
||||
|
||||
@@ -10,16 +10,16 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.content.pm.PackageInfo
|
||||
import coil.Coil
|
||||
import coil.ImageLoader
|
||||
import com.squareup.picasso.OkHttp3Downloader
|
||||
import com.squareup.picasso.Picasso
|
||||
import nya.kitsunyan.foxydroid.content.Cache
|
||||
import nya.kitsunyan.foxydroid.content.Preferences
|
||||
import nya.kitsunyan.foxydroid.content.ProductPreferences
|
||||
import nya.kitsunyan.foxydroid.database.Database
|
||||
import nya.kitsunyan.foxydroid.entity.InstalledItem
|
||||
import nya.kitsunyan.foxydroid.index.RepositoryUpdater
|
||||
import nya.kitsunyan.foxydroid.network.CoilDownloader
|
||||
import nya.kitsunyan.foxydroid.network.Downloader
|
||||
import nya.kitsunyan.foxydroid.network.PicassoDownloader
|
||||
import nya.kitsunyan.foxydroid.service.Connection
|
||||
import nya.kitsunyan.foxydroid.service.SyncService
|
||||
import nya.kitsunyan.foxydroid.utility.Utils
|
||||
@@ -48,8 +48,8 @@ class MainApplication: Application() {
|
||||
listenApplications()
|
||||
listenPreferences()
|
||||
|
||||
Coil.setImageLoader(ImageLoader.Builder(this)
|
||||
.callFactory(CoilDownloader.Factory(Cache.getImagesDir(this))).build())
|
||||
Picasso.setSingletonInstance(Picasso.Builder(this)
|
||||
.downloader(OkHttp3Downloader(PicassoDownloader.Factory(Cache.getImagesDir(this)))).build())
|
||||
|
||||
if (databaseUpdated) {
|
||||
forceSyncAll()
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import java.io.File
|
||||
import kotlin.math.*
|
||||
|
||||
object CoilDownloader {
|
||||
object PicassoDownloader {
|
||||
private const val HOST_ICON = "icon"
|
||||
private const val HOST_SCREENSHOT = "screenshot"
|
||||
private const val QUERY_ADDRESS = "address"
|
||||
@@ -40,7 +40,6 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.core.graphics.ColorUtils
|
||||
import androidx.core.text.util.LinkifyCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil.api.*
|
||||
import nya.kitsunyan.foxydroid.R
|
||||
import nya.kitsunyan.foxydroid.content.Preferences
|
||||
import nya.kitsunyan.foxydroid.content.ProductPreferences
|
||||
@@ -50,7 +49,7 @@ import nya.kitsunyan.foxydroid.entity.ProductPreference
|
||||
import nya.kitsunyan.foxydroid.entity.Release
|
||||
import nya.kitsunyan.foxydroid.entity.Repository
|
||||
import nya.kitsunyan.foxydroid.graphics.PaddingDrawable
|
||||
import nya.kitsunyan.foxydroid.network.CoilDownloader
|
||||
import nya.kitsunyan.foxydroid.network.PicassoDownloader
|
||||
import nya.kitsunyan.foxydroid.utility.KParcelable
|
||||
import nya.kitsunyan.foxydroid.utility.PackageItemResolver
|
||||
import nya.kitsunyan.foxydroid.utility.Utils
|
||||
@@ -953,7 +952,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
|
||||
item as Item.HeaderItem
|
||||
val installedItem = installedItem
|
||||
if (item.product.icon.isNotEmpty()) {
|
||||
holder.icon.load(CoilDownloader.createIconUri(holder.icon, item.product.icon, item.repository)) {
|
||||
holder.icon.load(PicassoDownloader.createIconUri(holder.icon, item.product.icon, item.repository)) {
|
||||
placeholder(holder.progressIcon)
|
||||
error(holder.defaultIcon)
|
||||
}
|
||||
@@ -1122,12 +1121,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
|
||||
val outer = context.resources.sizeScaled(GRID_SPACING_OUTER_DP)
|
||||
val inner = context.resources.sizeScaled(GRID_SPACING_INNER_DP)
|
||||
val cellSize = (screenWidth - 2 * outer - (columns - 1) * inner) / columns
|
||||
holder.image.load(CoilDownloader.createScreenshotUri(item.repository, item.packageName, item.screenshot)) {
|
||||
size(cellSize)
|
||||
holder.image.load(PicassoDownloader.createScreenshotUri(item.repository, item.packageName, item.screenshot)) {
|
||||
placeholder(holder.placeholder)
|
||||
error(holder.placeholder)
|
||||
resize(cellSize, cellSize)
|
||||
centerCrop()
|
||||
}
|
||||
Unit
|
||||
}
|
||||
ViewType.RELEASE -> {
|
||||
holder as ReleaseViewHolder
|
||||
|
||||
@@ -11,13 +11,11 @@ import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil.api.clear
|
||||
import coil.api.load
|
||||
import nya.kitsunyan.foxydroid.R
|
||||
import nya.kitsunyan.foxydroid.database.Database
|
||||
import nya.kitsunyan.foxydroid.entity.ProductItem
|
||||
import nya.kitsunyan.foxydroid.entity.Repository
|
||||
import nya.kitsunyan.foxydroid.network.CoilDownloader
|
||||
import nya.kitsunyan.foxydroid.network.PicassoDownloader
|
||||
import nya.kitsunyan.foxydroid.utility.Utils
|
||||
import nya.kitsunyan.foxydroid.utility.extension.resources.*
|
||||
import nya.kitsunyan.foxydroid.utility.extension.text.*
|
||||
@@ -127,7 +125,7 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit):
|
||||
holder.summary.visibility = if (holder.summary.text.isNotEmpty()) View.VISIBLE else View.GONE
|
||||
val repository: Repository? = repositories[productItem.repositoryId]
|
||||
if (productItem.icon.isNotEmpty() && repository != null) {
|
||||
holder.icon.load(CoilDownloader.createIconUri(holder.icon, productItem.icon, repository)) {
|
||||
holder.icon.load(PicassoDownloader.createIconUri(holder.icon, productItem.icon, repository)) {
|
||||
placeholder(holder.progressIcon)
|
||||
error(holder.defaultIcon)
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import androidx.fragment.app.FragmentManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.viewpager2.widget.MarginPageTransformer
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import coil.api.*
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Observable
|
||||
import io.reactivex.rxjava3.disposables.Disposable
|
||||
@@ -25,7 +24,7 @@ import nya.kitsunyan.foxydroid.database.Database
|
||||
import nya.kitsunyan.foxydroid.entity.Product
|
||||
import nya.kitsunyan.foxydroid.entity.Repository
|
||||
import nya.kitsunyan.foxydroid.graphics.PaddingDrawable
|
||||
import nya.kitsunyan.foxydroid.network.CoilDownloader
|
||||
import nya.kitsunyan.foxydroid.network.PicassoDownloader
|
||||
import nya.kitsunyan.foxydroid.utility.RxUtils
|
||||
import nya.kitsunyan.foxydroid.utility.extension.resources.*
|
||||
import nya.kitsunyan.foxydroid.widget.StableRecyclerAdapter
|
||||
@@ -101,6 +100,9 @@ class ScreenshotsFragment(): DialogFragment() {
|
||||
val viewPager = ViewPager2(dialog.context)
|
||||
viewPager.adapter = Adapter(packageName) { decorView.performClick() }
|
||||
viewPager.setPageTransformer(MarginPageTransformer(resources.sizeScaled(16)))
|
||||
viewPager.viewTreeObserver.addOnGlobalLayoutListener {
|
||||
(viewPager.adapter as Adapter).size = Pair(viewPager.width, viewPager.height)
|
||||
}
|
||||
dialog.addContentView(viewPager, ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT))
|
||||
this.viewPager = viewPager
|
||||
@@ -181,6 +183,14 @@ class ScreenshotsFragment(): DialogFragment() {
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
var size = Pair(0, 0)
|
||||
set(value) {
|
||||
if (field != value) {
|
||||
field = value
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
fun getCurrentIdentifier(viewPager: ViewPager2): String? {
|
||||
val position = viewPager.currentItem
|
||||
return screenshots.getOrNull(position)?.identifier
|
||||
@@ -202,9 +212,16 @@ class ScreenshotsFragment(): DialogFragment() {
|
||||
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
||||
holder as ViewHolder
|
||||
val screenshot = screenshots[position]
|
||||
holder.image.load(CoilDownloader.createScreenshotUri(repository!!, packageName, screenshot)) {
|
||||
val (width, height) = size
|
||||
if (width > 0 && height > 0) {
|
||||
holder.image.load(PicassoDownloader.createScreenshotUri(repository!!, packageName, screenshot)) {
|
||||
placeholder(holder.placeholder)
|
||||
error(holder.placeholder)
|
||||
resize(width, height)
|
||||
centerInside()
|
||||
}
|
||||
} else {
|
||||
holder.image.clear()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,16 @@ import android.content.res.ColorStateList
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.squareup.picasso.Picasso
|
||||
import com.squareup.picasso.RequestCreator
|
||||
import kotlin.math.*
|
||||
|
||||
object TypefaceExtra {
|
||||
@@ -51,3 +55,11 @@ fun TextView.setTextSizeScaled(size: Int) {
|
||||
fun ViewGroup.inflate(layoutResId: Int): View {
|
||||
return LayoutInflater.from(context).inflate(layoutResId, this, false)
|
||||
}
|
||||
|
||||
fun ImageView.load(uri: Uri, builder: RequestCreator.() -> Unit) {
|
||||
Picasso.get().load(uri).noFade().apply(builder).into(this)
|
||||
}
|
||||
|
||||
fun ImageView.clear() {
|
||||
Picasso.get().cancelRequest(this)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user