mirror of
https://github.com/rebelonion/Dantotsu.git
synced 2026-01-29 08:51:02 +00:00
widget outline
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
package ani.dantotsu.widgets
|
||||
|
||||
import android.app.Activity
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import ani.dantotsu.R
|
||||
import ani.dantotsu.databinding.CurrentlyAiringWidgetConfigureBinding
|
||||
import ani.dantotsu.others.LangSet
|
||||
import ani.dantotsu.themes.ThemeManager
|
||||
|
||||
/**
|
||||
* The configuration screen for the [CurrentlyAiringWidget] AppWidget.
|
||||
*/
|
||||
class CurrentlyAiringWidgetConfigureActivity : Activity() {
|
||||
private var appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID
|
||||
private lateinit var appWidgetText: EditText
|
||||
private var onClickListener = View.OnClickListener {
|
||||
val context = this@CurrentlyAiringWidgetConfigureActivity
|
||||
|
||||
// When the button is clicked, store the string locally
|
||||
val widgetText = appWidgetText.text.toString()
|
||||
saveTitlePref(context, appWidgetId, widgetText)
|
||||
|
||||
// It is the responsibility of the configuration activity to update the app widget
|
||||
val appWidgetManager = AppWidgetManager.getInstance(context)
|
||||
//updateAppWidget(context, appWidgetManager, appWidgetId)
|
||||
|
||||
|
||||
CurrentlyAiringWidget.updateAppWidget(
|
||||
context,
|
||||
appWidgetManager,
|
||||
appWidgetId,
|
||||
-1
|
||||
)
|
||||
|
||||
// Make sure we pass back the original appWidgetId
|
||||
val resultValue = Intent()
|
||||
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
|
||||
setResult(RESULT_OK, resultValue)
|
||||
finish()
|
||||
}
|
||||
private lateinit var binding: CurrentlyAiringWidgetConfigureBinding
|
||||
|
||||
public override fun onCreate(icicle: Bundle?) {
|
||||
LangSet.setLocale(this)
|
||||
ThemeManager(this).applyTheme()
|
||||
super.onCreate(icicle)
|
||||
|
||||
// Set the result to CANCELED. This will cause the widget host to cancel
|
||||
// out of the widget placement if the user presses the back button.
|
||||
setResult(RESULT_CANCELED)
|
||||
|
||||
binding = CurrentlyAiringWidgetConfigureBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
appWidgetText = binding.appwidgetText as EditText
|
||||
binding.addButton.setOnClickListener(onClickListener)
|
||||
|
||||
// Find the widget id from the intent.
|
||||
val intent = intent
|
||||
val extras = intent.extras
|
||||
if (extras != null) {
|
||||
appWidgetId = extras.getInt(
|
||||
AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID
|
||||
)
|
||||
}
|
||||
|
||||
// If this activity was started with an intent without an app widget ID, finish with an error.
|
||||
if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
appWidgetText.setText(
|
||||
loadTitlePref(
|
||||
this@CurrentlyAiringWidgetConfigureActivity,
|
||||
appWidgetId
|
||||
)
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private const val PREFS_NAME = "ani.dantotsu.parsers.CurrentlyAiringWidget"
|
||||
private const val PREF_PREFIX_KEY = "appwidget_"
|
||||
|
||||
// Write the prefix to the SharedPreferences object for this widget
|
||||
internal fun saveTitlePref(context: Context, appWidgetId: Int, text: String) {
|
||||
val prefs = context.getSharedPreferences(PREFS_NAME, 0).edit()
|
||||
prefs.putString(PREF_PREFIX_KEY + appWidgetId, text)
|
||||
prefs.apply()
|
||||
}
|
||||
|
||||
// Read the prefix from the SharedPreferences object for this widget.
|
||||
// If there is no preference saved, get the default from a resource
|
||||
internal fun loadTitlePref(context: Context, appWidgetId: Int): String {
|
||||
val prefs = context.getSharedPreferences(PREFS_NAME, 0)
|
||||
val titleValue = prefs.getString(PREF_PREFIX_KEY + appWidgetId, null)
|
||||
return titleValue ?: context.getString(R.string.appwidget_text)
|
||||
}
|
||||
|
||||
internal fun deleteTitlePref(context: Context, appWidgetId: Int) {
|
||||
val prefs = context.getSharedPreferences(PREFS_NAME, 0).edit()
|
||||
prefs.remove(PREF_PREFIX_KEY + appWidgetId)
|
||||
prefs.apply()
|
||||
}
|
||||
Reference in New Issue
Block a user