Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
GrakovNe committed Nov 21, 2024
1 parent c51daf2 commit cdfbbf9
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 deletions.
25 changes: 25 additions & 0 deletions app/src/main/java/org/grakovne/lissen/common/ImageExtension.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.grakovne.lissen.common

import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
Expand All @@ -10,6 +11,7 @@ import android.graphics.PorterDuffXfermode
import android.graphics.RectF
import android.util.Base64
import androidx.compose.ui.unit.Dp
import java.io.ByteArrayOutputStream

fun Bitmap.clip(
context: Context,
Expand Down Expand Up @@ -47,3 +49,26 @@ fun String.fromBase64(): Bitmap? = try {
}

fun ByteArray.toBase64(): String = Base64.encodeToString(this, Base64.DEFAULT)

@SuppressLint("UseCompatLoadingForDrawables")
fun Int.toBase64(context: Context): String {
try {
val drawable = context.getDrawable(this) ?: return ""
val bitmap = Bitmap.createBitmap(
drawable.intrinsicWidth,
drawable.intrinsicHeight,
Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bitmap)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)

val outputStream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
val byteArray = outputStream.toByteArray()

return Base64.encodeToString(byteArray, Base64.DEFAULT)
} catch (ex: Exception) {
return ""
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
package org.grakovne.lissen.widget

import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.util.Base64
import androidx.annotation.DrawableRes
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.GlanceAppWidgetManager
import androidx.glance.appwidget.GlanceAppWidgetReceiver
import androidx.glance.appwidget.state.updateAppWidgetState
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.grakovne.lissen.R
import org.grakovne.lissen.common.toBase64
import java.io.ByteArrayOutputStream

class PlayerWidgetReceiver : GlanceAppWidgetReceiver() {

Expand All @@ -26,9 +34,9 @@ class PlayerWidgetReceiver : GlanceAppWidgetReceiver() {
.forEach { glanceId ->
updateAppWidgetState(context, glanceId) { prefs ->
prefs[PlayerWidget.bookId] = ""
prefs[PlayerWidget.encodedCover] = ""
prefs[PlayerWidget.title] = "Lissen"
prefs[PlayerWidget.chapterTitle] = "Click to open App"
prefs[PlayerWidget.encodedCover] = R.drawable.ic_launcher_foreground.toBase64(context)
prefs[PlayerWidget.title] = context.getString(R.string.app_name)
prefs[PlayerWidget.chapterTitle] = context.getString(R.string.widget_placeholder_text)
prefs[PlayerWidget.isPlaying] = false
}
PlayerWidget().update(context, glanceId)
Expand All @@ -37,4 +45,4 @@ class PlayerWidgetReceiver : GlanceAppWidgetReceiver() {

super.onEnabled(context)
}
}
}
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,5 @@
<string name="timer_title">Sleep Timer</string>
<string name="player_screen_timer_navigation">Timer</string>
<string name="chapter_search_hint">Search by chapter title</string>
<string name="widget_placeholder_text">Click to open App</string>
</resources>

0 comments on commit cdfbbf9

Please sign in to comment.