Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@ dependencies {
implementation 'com.google.android.material:material:1.12.0'
implementation 'com.google.accompanist:accompanist-drawablepainter:0.37.3'

// Coil
implementation 'io.coil-kt.coil3:coil-compose:3.2.0'
implementation 'me.saket.telephoto:zoomable-image-coil3:0.16.0'

// Glide
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'com.github.bumptech.glide:okhttp3-integration:4.16.0'
Expand All @@ -188,7 +192,6 @@ dependencies {
ksp "androidx.room:room-compiler:2.7.2"
androidTestImplementation "androidx.room:room-testing:2.7.2"

implementation 'me.saket.telephoto:zoomable-image-glide:0.16.0'
implementation 'id.zelory:compressor:3.0.1'
implementation 'dev.chrisbanes.haze:haze:1.6.7'
implementation 'dev.chrisbanes.haze:haze-materials:1.6.7'
Expand Down
18 changes: 0 additions & 18 deletions app/src/main/java/app/simple/peri/application/PeriApplication.java

This file was deleted.

41 changes: 41 additions & 0 deletions app/src/main/java/app/simple/peri/application/PeriApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package app.simple.peri.application

import android.app.Application
import app.simple.peri.coil.fetchers.FolderFetcher
import app.simple.peri.coil.keyers.FolderKeyer
import app.simple.peri.utils.WallpaperSort.setSeed
import coil3.ImageLoader
import coil3.PlatformContext
import coil3.SingletonImageLoader
import coil3.disk.DiskCache
import coil3.disk.directory
import coil3.memory.MemoryCache
import com.google.android.material.color.DynamicColors

class PeriApplication : Application(), SingletonImageLoader.Factory {
override fun onCreate() {
super.onCreate()
DynamicColors.applyToActivitiesIfAvailable(this)
setSeed(System.currentTimeMillis())
}

override fun newImageLoader(context: PlatformContext): ImageLoader {
return ImageLoader.Builder(context)
.components {
add(FolderFetcher())
add(FolderKeyer())
}
.memoryCache {
MemoryCache.Builder()
.maxSizePercent(context, 0.25)
.build()
}
.diskCache {
DiskCache.Builder()
.directory(context.cacheDir.resolve("image_cache"))
.maxSizePercent(0.05)
.build()
}
.build()
}
}
13 changes: 13 additions & 0 deletions app/src/main/java/app/simple/peri/coil/fetchers/FolderFetcher.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package app.simple.peri.coil.fetchers

import app.simple.peri.coil.impl.FolderFetcherImpl
import app.simple.peri.coil.models.ContextFolder
import coil3.ImageLoader
import coil3.fetch.Fetcher
import coil3.request.Options

class FolderFetcher : Fetcher.Factory<ContextFolder> {
override fun create(data: ContextFolder, options: Options, imageLoader: ImageLoader): Fetcher? {
return FolderFetcherImpl(data)
}
}
57 changes: 57 additions & 0 deletions app/src/main/java/app/simple/peri/coil/impl/FolderFetcherImpl.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package app.simple.peri.coil.impl

import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
import androidx.core.graphics.createBitmap
import androidx.core.graphics.scale
import app.simple.peri.coil.models.ContextFolder
import app.simple.peri.database.instances.WallpaperDatabase
import app.simple.peri.ui.screens.displayDimension
import coil3.asImage
import coil3.decode.DataSource
import coil3.fetch.FetchResult
import coil3.fetch.Fetcher
import coil3.fetch.ImageFetchResult
import okio.Buffer

class FolderFetcherImpl(private val data: ContextFolder) : Fetcher {
override suspend fun fetch(): FetchResult? {
val context = data.context
val wallpaperDatabase = WallpaperDatabase.getInstance(context)!!
val wallpaperList = wallpaperDatabase.wallpaperDao().getWallpapersByPathHashcode(data.folder.hashcode)
val topWallpapers = wallpaperList.shuffled().take(GRID_COUNT)
val bitmapWidth = displayDimension.getReducedWidth()
val bitmapHeight = displayDimension.getReducedHeight()
val gridHeight = (topWallpapers.size / GRID_WIDTH) + if (topWallpapers.size % GRID_WIDTH == 0) 0 else 1
val gridBitmap = createBitmap(GRID_WIDTH * bitmapWidth, gridHeight * bitmapHeight)
val canvas = Canvas(gridBitmap)

canvas.drawColor(Color.TRANSPARENT)

topWallpapers.forEachIndexed { i, wallpaper ->
val bmp = android.graphics.BitmapFactory.decodeFile(wallpaper.filePath)
val x = (i % GRID_WIDTH) * bitmapWidth
val y = (i / GRID_WIDTH) * bitmapHeight
bmp?.let {
val scaled = it.scale(bitmapWidth, bitmapHeight)
canvas.drawBitmap(scaled, x.toFloat(), y.toFloat(), null)
if (scaled != it) scaled.recycle()
}
}

val buffer = Buffer()
gridBitmap.compress(Bitmap.CompressFormat.PNG, 100, buffer.outputStream())

return ImageFetchResult(
image = gridBitmap.asImage(),
isSampled = false,
dataSource = DataSource.NETWORK
)
}

companion object {
const val GRID_WIDTH = 3
const val GRID_COUNT = 12
}
}
11 changes: 11 additions & 0 deletions app/src/main/java/app/simple/peri/coil/keyers/FolderKeyer.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package app.simple.peri.coil.keyers

import app.simple.peri.coil.models.ContextFolder
import coil3.key.Keyer
import coil3.request.Options

class FolderKeyer : Keyer<ContextFolder> {
override fun key(data: ContextFolder, options: Options): String? {
return data.hashCode().toString()
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.simple.peri.glide.folders
package app.simple.peri.coil.models

import android.content.Context
import app.simple.peri.models.Folder
Expand Down
94 changes: 0 additions & 94 deletions app/src/main/java/app/simple/peri/glide/folders/FolderFetcher.kt

This file was deleted.

28 changes: 0 additions & 28 deletions app/src/main/java/app/simple/peri/glide/folders/FolderLoader.kt

This file was deleted.

17 changes: 0 additions & 17 deletions app/src/main/java/app/simple/peri/glide/modules/FolderModule.kt

This file was deleted.

58 changes: 0 additions & 58 deletions app/src/main/java/app/simple/peri/ui/commons/VignetteImage.kt

This file was deleted.

Loading