feat: default placeholder as ente's icon and different image everytime

This commit is contained in:
Prateek Sunal 2024-02-08 00:09:02 +05:30
parent 95588c8aef
commit 16c5e24cc7
3 changed files with 33 additions and 19 deletions

View file

@ -5,9 +5,11 @@ import android.content.Context
import android.content.SharedPreferences
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.util.Log
import android.view.View
import android.widget.RemoteViews
import androidx.core.content.ContextCompat
import es.antonborri.home_widget.HomeWidgetLaunchIntent
import es.antonborri.home_widget.HomeWidgetProvider
import java.io.File
@ -40,15 +42,22 @@ class SlideshowWidgetProvider : HomeWidgetProvider() {
if (imageExists) {
Log.d("SlideshowWidgetProvider", "Image exists: $imagePath")
setViewVisibility(R.id.widget_img, View.VISIBLE)
setViewVisibility(R.id.widget_title, View.GONE)
setViewVisibility(R.id.widget_placeholder, View.GONE)
val myBitmap: Bitmap = BitmapFactory.decodeFile(imagePath)
setImageViewBitmap(R.id.widget_img, myBitmap)
val bitmap: Bitmap = BitmapFactory.decodeFile(imagePath)
setImageViewBitmap(R.id.widget_img, bitmap)
} else {
Log.d("SlideshowWidgetProvider", "Image doesn't exists: $imagePath")
Log.d("SlideshowWidgetProvider", "Image doesn't exists")
setViewVisibility(R.id.widget_img, View.GONE)
setViewVisibility(R.id.widget_title, View.VISIBLE)
setTextViewText(R.id.widget_title, "No Image Loaded")
setViewVisibility(R.id.widget_placeholder, View.VISIBLE)
val drawable =
ContextCompat.getDrawable(
context,
R.drawable.ic_launcher_foreground
)
val bitmap = (drawable as BitmapDrawable).bitmap
setImageViewBitmap(R.id.widget_placeholder, bitmap)
}
}

View file

@ -6,19 +6,16 @@
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/widget_container">
<TextView
android:id="@+id/widget_title"
<ImageView
android:id="@+id/widget_placeholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/widget_background"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:visibility="visible"
tools:visibility="visible"
tools:text="Title" />
android:background="@drawable/widget_background"
/>
<ImageView
android:id="@+id/widget_img"
android:layout_width="match_parent"

View file

@ -251,11 +251,15 @@ class _HomeWidgetState extends State<HomeWidget> {
galleryLoadStartTime,
galleryLoadEndTime,
);
final prefs = await SharedPreferences.getInstance();
final files = res.files;
final previousGeneratedId = prefs.getInt("home_widget_last_img");
final files = res.files
.where((element) => element.generatedID != previousGeneratedId);
final randomNumber = Random().nextInt(files.length);
final randomFile = files[randomNumber];
final randomFile = files.elementAt(randomNumber);
final cachedThumbnail = await getThumbnailFromServer(randomFile);
var img = Image.memory(cachedThumbnail);
var imgProvider = img.image;
await precacheImage(imgProvider, context);
@ -289,6 +293,10 @@ class _HomeWidgetState extends State<HomeWidget> {
iOSName: 'SlideshowWidget',
);
if (randomFile.generatedID != null) {
await prefs.setInt("home_widget_last_img", randomFile.generatedID!);
}
_logger
.info(">>> HomeWidget rendered with size ${img.width}x${img.height}");
}