0
0
mirror of https://github.com/thunderbird/thunderbird-android.git synced 2024-09-19 19:52:14 +02:00

Move widget provider to apps

This commit is contained in:
Wolf-Martell Montwé 2024-06-20 11:32:01 +02:00
parent ba337a3730
commit 7c7c2223ec
No known key found for this signature in database
GPG Key ID: 6D45B21512ACBF72
18 changed files with 109 additions and 47 deletions

View File

@ -17,8 +17,8 @@ dependencies {
implementation(projects.app.core)
implementation(projects.app.ui.legacy)
implementation(projects.app.ui.messageListWidget)
implementation(projects.feature.widget.messageList)
implementation(projects.feature.widget.unread)
implementation(libs.androidx.work.runtime)

View File

@ -22,6 +22,22 @@
</provider>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name must be `com.fsck.k9.widget.list.MessageListWidgetProvider` and can't be changed. -->
<receiver
android:name="com.fsck.k9.widget.list.MessageListWidgetProvider"
android:icon="@drawable/message_list_widget_preview"
android:label="@string/mail_list_widget_text"
android:enabled="@bool/home_screen_widgets_enabled"
android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/message_list_widget_info" />
</receiver>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name must be `com.fsck.k9.provider.UnreadWidgetProvider` and can't be changed. -->
<receiver

View File

@ -5,9 +5,9 @@ import app.k9mail.core.common.oauth.OAuthConfigurationFactory
import app.k9mail.core.common.provider.AppNameProvider
import app.k9mail.dev.developmentModuleAdditions
import app.k9mail.feature.launcher.FeatureLauncherExternalContract.FeatureThemeProvider
import app.k9mail.feature.widget.unread.UnreadWidgetClassProvider
import app.k9mail.provider.K9AppNameProvider
import app.k9mail.provider.K9FeatureThemeProvider
import app.k9mail.widget.appWidgetModule
import com.fsck.k9.AppConfig
import com.fsck.k9.BuildConfig
import com.fsck.k9.activity.LauncherShortcuts
@ -19,15 +19,14 @@ import org.koin.core.qualifier.named
import org.koin.dsl.module
val appModule = module {
includes(appWidgetModule)
single(named("ClientInfoAppName")) { BuildConfig.CLIENT_INFO_APP_NAME }
single(named("ClientInfoAppVersion")) { BuildConfig.VERSION_NAME }
single<AppConfig> { appConfig }
single<OAuthConfigurationFactory> { K9OAuthConfigurationFactory() }
single<AppNameProvider> { K9AppNameProvider(androidContext()) }
single<FeatureThemeProvider> { K9FeatureThemeProvider() }
single<UnreadWidgetClassProvider> {
UnreadWidgetClassProvider { UnreadWidgetProvider::class.java }
}
developmentModuleAdditions()
}

View File

@ -0,0 +1,8 @@
package app.k9mail.widget
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import com.fsck.k9.widget.list.MessageListWidgetProvider
class K9MessageListWidgetConfig : MessageListWidgetConfig {
override val providerClass = MessageListWidgetProvider::class.java
}

View File

@ -0,0 +1,14 @@
package app.k9mail.widget
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import app.k9mail.feature.widget.unread.UnreadWidgetClassProvider
import com.fsck.k9.provider.UnreadWidgetProvider
import org.koin.dsl.module
val appWidgetModule = module {
single<MessageListWidgetConfig> { K9MessageListWidgetConfig() }
single<UnreadWidgetClassProvider> {
UnreadWidgetClassProvider { UnreadWidgetProvider::class.java }
}
}

View File

@ -0,0 +1,11 @@
package com.fsck.k9.widget.list
import app.k9mail.feature.widget.message.list.BaseMessageListWidgetProvider
/**
* IMPORTANT: The fully qualified name for this class must be
* `com.fsck.k9.widget.list.MessageListWidgetProvider`.
* Otherwise widgets created with older versions of the app using a different name
* will stop working or disappear.
*/
class MessageListWidgetProvider : BaseMessageListWidgetProvider()

View File

@ -17,8 +17,8 @@ dependencies {
implementation(projects.app.core)
implementation(projects.app.ui.legacy)
implementation(projects.app.ui.messageListWidget)
implementation(projects.feature.widget.messageList)
implementation(projects.feature.widget.unread)
implementation(libs.androidx.work.runtime)

View File

@ -22,6 +22,22 @@
</provider>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name must be `net.thunderbird.android.widget.provider.MessageListWidgetProvider` and can't be changed. -->
<receiver
android:name="net.thunderbird.android.widget.provider.MessageListWidgetProvider"
android:icon="@drawable/message_list_widget_preview"
android:label="@string/mail_list_widget_text"
android:enabled="@bool/home_screen_widgets_enabled"
android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/message_list_widget_info" />
</receiver>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<!-- IMPORTANT: The component name and can't be changed and always must be:
`net.thunderbird.android.widget.provider.UnreadWidgetProvider`

View File

@ -3,30 +3,29 @@ package net.thunderbird.android
import app.k9mail.core.common.oauth.OAuthConfigurationFactory
import app.k9mail.core.common.provider.AppNameProvider
import app.k9mail.feature.launcher.FeatureLauncherExternalContract.FeatureThemeProvider
import app.k9mail.feature.widget.unread.UnreadWidgetClassProvider
import com.fsck.k9.AppConfig
import com.fsck.k9.activity.LauncherShortcuts
import com.fsck.k9.activity.MessageCompose
import com.fsck.k9.widget.list.MessageListWidgetProvider
import net.thunderbird.android.auth.ThunderbirdOAuthConfigurationFactory
import net.thunderbird.android.dev.developmentModuleAdditions
import net.thunderbird.android.provider.TbAppNameProvider
import net.thunderbird.android.provider.TbFeatureThemeProvider
import net.thunderbird.android.widget.appWidgetModule
import net.thunderbird.android.widget.provider.MessageListWidgetProvider
import net.thunderbird.android.widget.provider.UnreadWidgetProvider
import org.koin.android.ext.koin.androidContext
import org.koin.core.qualifier.named
import org.koin.dsl.module
val appModule = module {
includes(appWidgetModule)
single(named("ClientInfoAppName")) { BuildConfig.CLIENT_INFO_APP_NAME }
single(named("ClientInfoAppVersion")) { BuildConfig.VERSION_NAME }
single<AppConfig> { appConfig }
single<OAuthConfigurationFactory> { ThunderbirdOAuthConfigurationFactory() }
single<AppNameProvider> { TbAppNameProvider(androidContext()) }
single<FeatureThemeProvider> { TbFeatureThemeProvider() }
single<UnreadWidgetClassProvider> {
UnreadWidgetClassProvider { UnreadWidgetProvider::class.java }
}
developmentModuleAdditions()
}

View File

@ -0,0 +1,14 @@
package net.thunderbird.android.widget
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import app.k9mail.feature.widget.unread.UnreadWidgetClassProvider
import net.thunderbird.android.widget.provider.UnreadWidgetProvider
import org.koin.dsl.module
val appWidgetModule = module {
single<MessageListWidgetConfig> { TbMessageListWidgetConfig() }
single<UnreadWidgetClassProvider> {
UnreadWidgetClassProvider { UnreadWidgetProvider::class.java }
}
}

View File

@ -0,0 +1,8 @@
package net.thunderbird.android.widget
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import net.thunderbird.android.widget.provider.MessageListWidgetProvider
class TbMessageListWidgetConfig : MessageListWidgetConfig {
override val providerClass = MessageListWidgetProvider::class.java
}

View File

@ -0,0 +1,11 @@
package net.thunderbird.android.widget.provider
import app.k9mail.feature.widget.message.list.BaseMessageListWidgetProvider
/**
* IMPORTANT: The fully qualified name for this class must be
* `net.thunderbird.android.widget.provider.MessageListWidgetProvider`.
* Otherwise widgets created with older versions of the app using a different name
* will stop working or disappear.
*/
class MessageListWidgetProvider : BaseMessageListWidgetProvider()

View File

@ -230,21 +230,6 @@
</intent-filter>
</activity>
<!-- This component is disabled by default (if possible). It will be enabled programmatically if necessary. -->
<receiver
android:name="com.fsck.k9.widget.list.MessageListWidgetProvider"
android:icon="@drawable/message_list_widget_preview"
android:label="@string/mail_list_widget_text"
android:enabled="@bool/home_screen_widgets_enabled"
android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/message_list_widget_info" />
</receiver>
<!-- This component is disabled by default. It will be enabled programmatically if necessary. -->
<receiver
android:name="com.fsck.k9.controller.push.BootCompleteReceiver"

View File

@ -18,7 +18,6 @@ import com.fsck.k9.preferences.K9StoragePersister
import com.fsck.k9.preferences.StoragePersister
import com.fsck.k9.resources.resourcesModule
import com.fsck.k9.storage.storageModule
import com.fsck.k9.widget.list.messageListWidgetConfigModule
import org.koin.core.qualifier.named
import org.koin.dsl.module
@ -43,7 +42,6 @@ val commonAppModule = module {
val commonAppModules = listOf(
commonAppModule,
messageListWidgetConfigModule,
messageListWidgetModule,
unreadWidgetModule,
notificationModule,

View File

@ -1,8 +0,0 @@
package com.fsck.k9.widget.list
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
import org.koin.dsl.module
val messageListWidgetConfigModule = module {
single<MessageListWidgetConfig> { K9MessageListWidgetConfig() }
}

View File

@ -1,9 +0,0 @@
package com.fsck.k9.widget.list
import app.k9mail.feature.widget.message.list.MessageListWidgetConfig
class MessageListWidgetProvider : app.k9mail.feature.widget.message.list.MessageListWidgetProvider()
internal class K9MessageListWidgetConfig : MessageListWidgetConfig {
override val providerClass = MessageListWidgetProvider::class.java
}

View File

@ -15,7 +15,7 @@ import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import com.fsck.k9.ui.R as UiR
open class MessageListWidgetProvider : AppWidgetProvider(), KoinComponent {
abstract class BaseMessageListWidgetProvider : AppWidgetProvider(), KoinComponent {
private val messageListWidgetManager: MessageListWidgetManager by inject()
override fun onEnabled(context: Context) {

View File

@ -1,5 +1,5 @@
package app.k9mail.feature.widget.message.list
interface MessageListWidgetConfig {
val providerClass: Class<out MessageListWidgetProvider>
val providerClass: Class<out BaseMessageListWidgetProvider>
}