fix: layout tweaks for upcoming widget

This commit is contained in:
rebelonion 2024-03-25 22:08:51 -05:00
parent 3375496ef2
commit be07fad8f1
14 changed files with 93 additions and 91 deletions

View file

@ -62,7 +62,7 @@
tools:targetApi="tiramisu">
<receiver
android:name=".widgets.CurrentlyAiringWidget"
android:name=".widgets.UpcomingWidget"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
@ -70,10 +70,10 @@
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/currently_airing_widget_info" />
android:resource="@xml/upcoming_widget_info" />
</receiver>
<activity
android:name=".widgets.CurrentlyAiringWidgetConfigureActivity"
android:name=".widgets.UpcomingWidgetConfigureActivity"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
@ -347,7 +347,7 @@
</provider>
<service
android:name=".widgets.CurrentlyAiringRemoteViewsService"
android:name=".widgets.UpcomingRemoteViewsService"
android:exported="true"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<service

View file

@ -23,15 +23,15 @@ import java.io.InputStream
import java.net.HttpURLConnection
import java.net.URL
class CurrentlyAiringRemoteViewsFactory(private val context: Context) :
class UpcomingRemoteViewsFactory(private val context: Context) :
RemoteViewsService.RemoteViewsFactory {
private var widgetItems = mutableListOf<WidgetItem>()
private var refreshing = false
private val prefs =
context.getSharedPreferences(CurrentlyAiringWidget.PREFS_NAME, Context.MODE_PRIVATE)
context.getSharedPreferences(UpcomingWidget.PREFS_NAME, Context.MODE_PRIVATE)
override fun onCreate() {
Logger.log("CurrentlyAiringRemoteViewsFactory onCreate")
Logger.log("UpcomingRemoteViewsFactory onCreate")
fillWidgetItems()
}
@ -44,7 +44,7 @@ class CurrentlyAiringRemoteViewsFactory(private val context: Context) :
override fun onDataSetChanged() {
if (refreshing) return
Logger.log("CurrentlyAiringRemoteViewsFactory onDataSetChanged")
Logger.log("UpcomingRemoteViewsFactory onDataSetChanged")
widgetItems.clear()
fillWidgetItems()
@ -78,12 +78,12 @@ class CurrentlyAiringRemoteViewsFactory(private val context: Context) :
}
override fun getViewAt(position: Int): RemoteViews {
Logger.log("CurrentlyAiringRemoteViewsFactory getViewAt")
Logger.log("UpcomingRemoteViewsFactory getViewAt")
val item = widgetItems[position]
val titleTextColor = prefs.getInt(CurrentlyAiringWidget.PREF_TITLE_TEXT_COLOR, Color.WHITE)
val titleTextColor = prefs.getInt(UpcomingWidget.PREF_TITLE_TEXT_COLOR, Color.WHITE)
val countdownTextColor =
prefs.getInt(CurrentlyAiringWidget.PREF_COUNTDOWN_TEXT_COLOR, Color.WHITE)
val rv = RemoteViews(context.packageName, R.layout.item_currently_airing_widget).apply {
prefs.getInt(UpcomingWidget.PREF_COUNTDOWN_TEXT_COLOR, Color.WHITE)
val rv = RemoteViews(context.packageName, R.layout.item_upcoming_widget).apply {
setTextViewText(R.id.text_show_title, item.title)
setTextViewText(R.id.text_show_countdown, item.countdown)
setTextColor(R.id.text_show_title, titleTextColor)
@ -138,7 +138,7 @@ class CurrentlyAiringRemoteViewsFactory(private val context: Context) :
override fun getLoadingView(): RemoteViews {
return RemoteViews(context.packageName, R.layout.item_currently_airing_widget)
return RemoteViews(context.packageName, R.layout.item_upcoming_widget)
}
override fun getViewTypeCount(): Int {

View file

@ -4,9 +4,9 @@ import android.content.Intent
import android.widget.RemoteViewsService
import ani.dantotsu.util.Logger
class CurrentlyAiringRemoteViewsService : RemoteViewsService() {
class UpcomingRemoteViewsService : RemoteViewsService() {
override fun onGetViewFactory(intent: Intent): RemoteViewsFactory {
Logger.log("CurrentlyAiringRemoteViewsFactory onGetViewFactory")
return CurrentlyAiringRemoteViewsFactory(applicationContext)
Logger.log("UpcomingRemoteViewsFactory onGetViewFactory")
return UpcomingRemoteViewsFactory(applicationContext)
}
}

View file

@ -19,9 +19,9 @@ import ani.dantotsu.R
/**
* Implementation of App Widget functionality.
* App Widget Configuration implemented in [CurrentlyAiringWidgetConfigureActivity]
* App Widget Configuration implemented in [UpcomingWidgetConfigureActivity]
*/
class CurrentlyAiringWidget : AppWidgetProvider() {
class UpcomingWidget : AppWidgetProvider() {
override fun onUpdate(
context: Context,
appWidgetManager: AppWidgetManager,
@ -62,7 +62,7 @@ class CurrentlyAiringWidget : AppWidgetProvider() {
val titleTextColor = prefs.getInt(PREF_TITLE_TEXT_COLOR, Color.WHITE)
val countdownTextColor = prefs.getInt(PREF_COUNTDOWN_TEXT_COLOR, Color.WHITE)
val intent = Intent(context, CurrentlyAiringRemoteViewsService::class.java).apply {
val intent = Intent(context, UpcomingRemoteViewsService::class.java).apply {
putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
data = Uri.parse(toUri(Intent.URI_INTENT_SCHEME))
}
@ -77,7 +77,7 @@ class CurrentlyAiringWidget : AppWidgetProvider() {
intentTemplate.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
intentTemplate.putExtra("fromWidget", true)
val views = RemoteViews(context.packageName, R.layout.currently_airing_widget).apply {
val views = RemoteViews(context.packageName, R.layout.upcoming_widget).apply {
setImageViewBitmap(R.id.backgroundView, convertDrawableToBitmap(gradientDrawable))
setTextColor(R.id.text_show_title, titleTextColor)
setTextColor(R.id.text_show_countdown, countdownTextColor)
@ -98,7 +98,7 @@ class CurrentlyAiringWidget : AppWidgetProvider() {
PendingIntent.getActivity(
context,
1,
Intent(context, CurrentlyAiringWidgetConfigureActivity::class.java).apply {
Intent(context, UpcomingWidgetConfigureActivity::class.java).apply {
putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
},
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
@ -118,7 +118,7 @@ class CurrentlyAiringWidget : AppWidgetProvider() {
return bitmap
}
const val PREFS_NAME = "ani.dantotsu.widgets.CurrentlyAiringWidget"
const val PREFS_NAME = "ani.dantotsu.widgets.UpcomingWidget"
const val PREF_BACKGROUND_COLOR = "background_color"
const val PREF_BACKGROUND_FADE = "background_fade"
const val PREF_TITLE_TEXT_COLOR = "title_text_color"
@ -131,7 +131,7 @@ internal fun updateAppWidget(
appWidgetManager: AppWidgetManager,
appWidgetId: Int
) {
val views = CurrentlyAiringWidget.updateAppWidget(context, appWidgetId)
val views = UpcomingWidget.updateAppWidget(context, appWidgetId)
appWidgetManager.updateAppWidget(appWidgetId, views)
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.widgetListView)
}

View file

@ -9,20 +9,20 @@ import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import ani.dantotsu.R
import ani.dantotsu.databinding.CurrentlyAiringWidgetConfigureBinding
import ani.dantotsu.databinding.UpcomingWidgetConfigureBinding
import ani.dantotsu.themes.ThemeManager
import eltos.simpledialogfragment.SimpleDialog
import eltos.simpledialogfragment.color.SimpleColorDialog
/**
* The configuration screen for the [CurrentlyAiringWidget] AppWidget.
* The configuration screen for the [UpcomingWidget] AppWidget.
*/
class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
class UpcomingWidgetConfigureActivity : AppCompatActivity(),
SimpleDialog.OnDialogResultListener {
private var appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID
private var onClickListener = View.OnClickListener {
val context = this@CurrentlyAiringWidgetConfigureActivity
val context = this@UpcomingWidgetConfigureActivity
val appWidgetManager = AppWidgetManager.getInstance(context)
updateAppWidget(
@ -36,28 +36,28 @@ class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
setResult(RESULT_OK, resultValue)
finish()
}
private lateinit var binding: CurrentlyAiringWidgetConfigureBinding
private lateinit var binding: UpcomingWidgetConfigureBinding
public override fun onCreate(icicle: Bundle?) {
ThemeManager(this).applyTheme()
super.onCreate(icicle)
setResult(RESULT_CANCELED)
binding = CurrentlyAiringWidgetConfigureBinding.inflate(layoutInflater)
binding = UpcomingWidgetConfigureBinding.inflate(layoutInflater)
setContentView(binding.root)
val prefs = getSharedPreferences(CurrentlyAiringWidget.PREFS_NAME, Context.MODE_PRIVATE)
val prefs = getSharedPreferences(UpcomingWidget.PREFS_NAME, Context.MODE_PRIVATE)
binding.topBackgroundButton.setOnClickListener {
val tag = CurrentlyAiringWidget.PREF_BACKGROUND_COLOR
val tag = UpcomingWidget.PREF_BACKGROUND_COLOR
SimpleColorDialog().title(R.string.custom_theme)
.colorPreset(
prefs.getInt(
CurrentlyAiringWidget.PREF_BACKGROUND_COLOR,
UpcomingWidget.PREF_BACKGROUND_COLOR,
ContextCompat.getColor(this, R.color.theme)
)
)
.colors(
this@CurrentlyAiringWidgetConfigureActivity,
this@UpcomingWidgetConfigureActivity,
SimpleColorDialog.MATERIAL_COLOR_PALLET
)
.allowCustom(true)
@ -65,14 +65,14 @@ class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
.gridNumColumn(5)
.choiceMode(SimpleColorDialog.SINGLE_CHOICE)
.neg()
.show(this@CurrentlyAiringWidgetConfigureActivity, tag)
.show(this@UpcomingWidgetConfigureActivity, tag)
}
binding.bottomBackgroundButton.setOnClickListener {
val tag = CurrentlyAiringWidget.PREF_BACKGROUND_FADE
val tag = UpcomingWidget.PREF_BACKGROUND_FADE
SimpleColorDialog().title(R.string.custom_theme)
.colorPreset(prefs.getInt(CurrentlyAiringWidget.PREF_BACKGROUND_FADE, Color.GRAY))
.colorPreset(prefs.getInt(UpcomingWidget.PREF_BACKGROUND_FADE, Color.GRAY))
.colors(
this@CurrentlyAiringWidgetConfigureActivity,
this@UpcomingWidgetConfigureActivity,
SimpleColorDialog.MATERIAL_COLOR_PALLET
)
.allowCustom(true)
@ -80,14 +80,14 @@ class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
.gridNumColumn(5)
.choiceMode(SimpleColorDialog.SINGLE_CHOICE)
.neg()
.show(this@CurrentlyAiringWidgetConfigureActivity, tag)
.show(this@UpcomingWidgetConfigureActivity, tag)
}
binding.titleColorButton.setOnClickListener {
val tag = CurrentlyAiringWidget.PREF_TITLE_TEXT_COLOR
val tag = UpcomingWidget.PREF_TITLE_TEXT_COLOR
SimpleColorDialog().title(R.string.custom_theme)
.colorPreset(prefs.getInt(CurrentlyAiringWidget.PREF_TITLE_TEXT_COLOR, Color.WHITE))
.colorPreset(prefs.getInt(UpcomingWidget.PREF_TITLE_TEXT_COLOR, Color.WHITE))
.colors(
this@CurrentlyAiringWidgetConfigureActivity,
this@UpcomingWidgetConfigureActivity,
SimpleColorDialog.MATERIAL_COLOR_PALLET
)
.allowCustom(true)
@ -95,19 +95,19 @@ class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
.gridNumColumn(5)
.choiceMode(SimpleColorDialog.SINGLE_CHOICE)
.neg()
.show(this@CurrentlyAiringWidgetConfigureActivity, tag)
.show(this@UpcomingWidgetConfigureActivity, tag)
}
binding.countdownColorButton.setOnClickListener {
val tag = CurrentlyAiringWidget.PREF_COUNTDOWN_TEXT_COLOR
val tag = UpcomingWidget.PREF_COUNTDOWN_TEXT_COLOR
SimpleColorDialog().title(R.string.custom_theme)
.colorPreset(
prefs.getInt(
CurrentlyAiringWidget.PREF_COUNTDOWN_TEXT_COLOR,
UpcomingWidget.PREF_COUNTDOWN_TEXT_COLOR,
Color.WHITE
)
)
.colors(
this@CurrentlyAiringWidgetConfigureActivity,
this@UpcomingWidgetConfigureActivity,
SimpleColorDialog.MATERIAL_COLOR_PALLET
)
.allowCustom(true)
@ -115,7 +115,7 @@ class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
.gridNumColumn(5)
.choiceMode(SimpleColorDialog.SINGLE_CHOICE)
.neg()
.show(this@CurrentlyAiringWidgetConfigureActivity, tag)
.show(this@UpcomingWidgetConfigureActivity, tag)
}
binding.addButton.setOnClickListener(onClickListener)
@ -137,49 +137,49 @@ class CurrentlyAiringWidgetConfigureActivity : AppCompatActivity(),
override fun onResult(dialogTag: String, which: Int, extras: Bundle): Boolean {
if (which == SimpleDialog.OnDialogResultListener.BUTTON_POSITIVE) {
when (dialogTag) {
CurrentlyAiringWidget.PREF_BACKGROUND_COLOR -> {
UpcomingWidget.PREF_BACKGROUND_COLOR -> {
getSharedPreferences(
CurrentlyAiringWidget.PREFS_NAME,
UpcomingWidget.PREFS_NAME,
Context.MODE_PRIVATE
).edit()
.putInt(
CurrentlyAiringWidget.PREF_BACKGROUND_COLOR,
UpcomingWidget.PREF_BACKGROUND_COLOR,
extras.getInt(SimpleColorDialog.COLOR)
)
.apply()
}
CurrentlyAiringWidget.PREF_BACKGROUND_FADE -> {
UpcomingWidget.PREF_BACKGROUND_FADE -> {
getSharedPreferences(
CurrentlyAiringWidget.PREFS_NAME,
UpcomingWidget.PREFS_NAME,
Context.MODE_PRIVATE
).edit()
.putInt(
CurrentlyAiringWidget.PREF_BACKGROUND_FADE,
UpcomingWidget.PREF_BACKGROUND_FADE,
extras.getInt(SimpleColorDialog.COLOR)
)
.apply()
}
CurrentlyAiringWidget.PREF_TITLE_TEXT_COLOR -> {
UpcomingWidget.PREF_TITLE_TEXT_COLOR -> {
getSharedPreferences(
CurrentlyAiringWidget.PREFS_NAME,
UpcomingWidget.PREFS_NAME,
Context.MODE_PRIVATE
).edit()
.putInt(
CurrentlyAiringWidget.PREF_TITLE_TEXT_COLOR,
UpcomingWidget.PREF_TITLE_TEXT_COLOR,
extras.getInt(SimpleColorDialog.COLOR)
)
.apply()
}
CurrentlyAiringWidget.PREF_COUNTDOWN_TEXT_COLOR -> {
UpcomingWidget.PREF_COUNTDOWN_TEXT_COLOR -> {
getSharedPreferences(
CurrentlyAiringWidget.PREFS_NAME,
UpcomingWidget.PREFS_NAME,
Context.MODE_PRIVATE
).edit()
.putInt(
CurrentlyAiringWidget.PREF_COUNTDOWN_TEXT_COLOR,
UpcomingWidget.PREF_COUNTDOWN_TEXT_COLOR,
extras.getInt(SimpleColorDialog.COLOR)
)
.apply()

View file

@ -16,7 +16,7 @@
android:id="@+id/widgetContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
android:padding="8dp">
<ImageView
android:id="@+id/logoView"
@ -41,7 +41,7 @@
android:maxLines="2"
android:ellipsize="none"
android:autoSizeTextType="uniform"
android:text="@string/currently_airing"
android:text="@string/upcoming"
android:textSize="20sp"
android:textStyle="bold" />

View file

@ -6,11 +6,12 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="8dp">
android:paddingTop="4dp"
android:paddingBottom="4dp">
<ImageView
android:id="@+id/image_show_icon"
android:layout_width="48dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:shapeAppearanceOverlay="@style/roundedImageView"
android:contentDescription="@string/airing_image"/>
@ -30,7 +31,7 @@
android:fontFamily="@font/poppins_bold"
android:text=""
android:textColor="@color/bg_white"
android:maxLines="3"
android:maxLines="2"
android:ellipsize="end"
android:textSize="16sp" />

View file

@ -16,7 +16,7 @@
android:id="@+id/widgetContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
android:padding="8dp">
<ImageView
android:id="@+id/logoView"
@ -40,7 +40,7 @@
android:textAlignment="viewStart"
android:maxLines="2"
android:ellipsize="none"
android:text="@string/currently_airing"
android:text="@string/upcoming"
android:textSize="20sp"
android:textStyle="bold" />

View file

@ -678,6 +678,7 @@
<string name="configure">Configure</string>
<string name="add_widget">Add widget</string>
<string name="app_widget_description">This is an app widget description</string>
<string name="upcoming_anime">Upcoming Anime</string>
<string name="airing_image">Airing Image</string>
<string name="anime_downloads">animeDownloads</string>
<string name="purge_anime_downloads">Delete all Anime downloads</string>
@ -720,7 +721,7 @@
<string name="mutual">Mutual</string>
<string name="success">Success</string>
<string name="currently_airing">Currently Airing</string>
<string name="upcoming">Upcoming</string>
<string name="no_shows_to_display">No shows to display</string>
<string name="extension_name">Extension Name</string>
<string name="extension_version">version</string>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/app_widget_description"
android:configure="ani.dantotsu.widgets.CurrentlyAiringWidgetConfigureActivity"
android:initialKeyguardLayout="@layout/currently_airing_widget"
android:initialLayout="@layout/currently_airing_widget"
android:minWidth="160dp"
android:minHeight="160dp"
android:previewImage="@drawable/example_appwidget_preview"
android:previewLayout="@layout/currently_airing_widget"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="3600000"
android:widgetCategory="home_screen"/>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/upcoming_anime"
android:configure="ani.dantotsu.widgets.UpcomingWidgetConfigureActivity"
android:initialKeyguardLayout="@layout/upcoming_widget"
android:initialLayout="@layout/upcoming_widget"
android:minWidth="160dp"
android:minHeight="80dp"
android:previewImage="@drawable/example_appwidget_preview"
android:previewLayout="@layout/upcoming_widget"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="3600000"
android:widgetCategory="home_screen"/>

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/app_widget_description"
android:configure="ani.dantotsu.widgets.CurrentlyAiringWidgetConfigureActivity"
android:initialKeyguardLayout="@layout/currently_airing_widget"
android:initialLayout="@layout/currently_airing_widget"
android:minWidth="160dp"
android:minHeight="160dp"
android:previewImage="@drawable/example_appwidget_preview"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="3600000"
android:widgetCategory="home_screen"/>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/upcoming_anime"
android:configure="ani.dantotsu.widgets.UpcomingWidgetConfigureActivity"
android:initialKeyguardLayout="@layout/upcoming_widget"
android:initialLayout="@layout/upcoming_widget"
android:minWidth="160dp"
android:minHeight="80dp"
android:previewImage="@drawable/example_appwidget_preview"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="3600000"
android:widgetCategory="home_screen"/>