This commit is contained in:
bwees 2025-06-19 11:11:11 -05:00
parent a11ab4c3f7
commit 30bd74ea60
No known key found for this signature in database
5 changed files with 74 additions and 0 deletions

View File

@ -3,6 +3,8 @@ plugins {
id "kotlin-android" id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin" id "dev.flutter.flutter-gradle-plugin"
id 'com.google.devtools.ksp' id 'com.google.devtools.ksp'
id 'org.jetbrains.kotlin.plugin.compose' version '2.0.20' // this version matches your Kotlin version
} }
def localProperties = new Properties() def localProperties = new Properties()
@ -45,6 +47,10 @@ android {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
} }
buildFeatures {
compose true
}
defaultConfig { defaultConfig {
applicationId "app.alextran.immich" applicationId "app.alextran.immich"
minSdkVersion 26 minSdkVersion 26
@ -102,6 +108,9 @@ dependencies {
ksp "com.github.bumptech.glide:ksp:$glide_version" ksp "com.github.bumptech.glide:ksp:$glide_version"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2'
//Glance Widget
implementation "androidx.glance:glance-appwidget:1.1.1"
} }
// This is uncommented in F-Droid build script // This is uncommented in F-Droid build script

View File

@ -141,6 +141,19 @@
android:name="androidx.startup.InitializationProvider" android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup" android:authorities="${applicationId}.androidx-startup"
tools:node="remove" /> tools:node="remove" />
<!-- Widgets -->
<receiver
android:name="app.alextran.immich.widget.RandomWidget"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget" />
</receiver>
</application> </application>

View File

@ -0,0 +1,8 @@
package app.alextran.immich.widget
import HomeWidgetGlanceWidgetReceiver
class RandomReceiver : HomeWidgetGlanceWidgetReceiver<RandomWidget>() {
override val glanceAppWidget = RandomWidget()
}

View File

@ -0,0 +1,37 @@
package app.alextran.immich.widget
import HomeWidgetGlanceState
import HomeWidgetGlanceStateDefinition
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.glance.appwidget.*
import androidx.glance.*
import androidx.glance.layout.*
import androidx.glance.state.*
import androidx.glance.text.*
class RandomWidget : GlanceAppWidget() {
override val stateDefinition: GlanceStateDefinition<*>
get() = HomeWidgetGlanceStateDefinition()
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
GlanceContent(context, currentState())
}
}
@Composable
private fun GlanceContent(context: Context, currentState: HomeWidgetGlanceState) {
val prefs = currentState.preferences
val counter = prefs.getInt("counter", 0)
Box(modifier = GlanceModifier.background(Color.White).padding(16.dp)) {
Column() {
Text(
counter.toString()
)
}
}
}
}

View File

@ -0,0 +1,7 @@
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/glance_default_loading_layout"
android:minWidth="110dp"
android:minHeight="110dp"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="1200000"
/>