mirror of
https://github.com/SimpleMobileTools/Simple-Notes.git
synced 2025-04-15 15:57:24 +02:00
rewrite the widget to the more modern way of handling
This commit is contained in:
parent
982925e456
commit
eb496863e8
@ -35,10 +35,10 @@ val Context.dbHelper: DBHelper get() = DBHelper.newInstance(applicationContext)
|
|||||||
|
|
||||||
fun Context.getNoteStoredValue(note: Note): String? {
|
fun Context.getNoteStoredValue(note: Note): String? {
|
||||||
return if (note.path.isNotEmpty()) {
|
return if (note.path.isNotEmpty()) {
|
||||||
try {
|
return try {
|
||||||
return File(note.path).readText()
|
File(note.path).readText()
|
||||||
} catch (e: FileNotFoundException) {
|
} catch (e: FileNotFoundException) {
|
||||||
return null
|
null
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
note.value
|
note.value
|
||||||
|
@ -3,6 +3,7 @@ package com.simplemobiletools.notes.helpers
|
|||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
import android.appwidget.AppWidgetProvider
|
import android.appwidget.AppWidgetProvider
|
||||||
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -11,7 +12,6 @@ import com.simplemobiletools.commons.extensions.setBackgroundColor
|
|||||||
import com.simplemobiletools.commons.extensions.setText
|
import com.simplemobiletools.commons.extensions.setText
|
||||||
import com.simplemobiletools.commons.extensions.setTextSize
|
import com.simplemobiletools.commons.extensions.setTextSize
|
||||||
import com.simplemobiletools.notes.R
|
import com.simplemobiletools.notes.R
|
||||||
import com.simplemobiletools.notes.R.layout.widget
|
|
||||||
import com.simplemobiletools.notes.activities.SplashActivity
|
import com.simplemobiletools.notes.activities.SplashActivity
|
||||||
import com.simplemobiletools.notes.extensions.config
|
import com.simplemobiletools.notes.extensions.config
|
||||||
import com.simplemobiletools.notes.extensions.dbHelper
|
import com.simplemobiletools.notes.extensions.dbHelper
|
||||||
@ -19,63 +19,52 @@ import com.simplemobiletools.notes.extensions.getNoteStoredValue
|
|||||||
import com.simplemobiletools.notes.extensions.getTextSize
|
import com.simplemobiletools.notes.extensions.getTextSize
|
||||||
|
|
||||||
class MyWidgetProvider : AppWidgetProvider() {
|
class MyWidgetProvider : AppWidgetProvider() {
|
||||||
lateinit var mDb: DBHelper
|
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
||||||
var textIds = arrayOf(R.id.notes_view_left, R.id.notes_view_center, R.id.notes_view_right)
|
performUpdate(context)
|
||||||
|
|
||||||
companion object {
|
|
||||||
lateinit var mRemoteViews: RemoteViews
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
private fun performUpdate(context: Context) {
|
||||||
initVariables(context)
|
|
||||||
val config = context.config
|
val config = context.config
|
||||||
val widgetBgColor = config.widgetBgColor
|
val widgetBgColor = config.widgetBgColor
|
||||||
val widgetTextColor = config.widgetTextColor
|
val widgetTextColor = config.widgetTextColor
|
||||||
|
|
||||||
for (id in textIds) {
|
val textIds = arrayOf(R.id.notes_view_left, R.id.notes_view_center, R.id.notes_view_right)
|
||||||
mRemoteViews.apply {
|
val appWidgetManager = AppWidgetManager.getInstance(context)
|
||||||
setBackgroundColor(id, widgetBgColor)
|
appWidgetManager.getAppWidgetIds(getComponentName(context)).forEach {
|
||||||
setTextColor(id, widgetTextColor)
|
val views = RemoteViews(context.packageName, R.layout.widget)
|
||||||
setTextSize(id, context.getTextSize() / context.resources.displayMetrics.density)
|
setupAppOpenIntent(context, views, R.id.notes_holder)
|
||||||
setViewVisibility(id, View.GONE)
|
|
||||||
|
val note = context.dbHelper.getNote(context.config.widgetNoteId)
|
||||||
|
for (id in textIds) {
|
||||||
|
if (note != null) {
|
||||||
|
views.apply {
|
||||||
|
setText(id, context.getNoteStoredValue(note)!!)
|
||||||
|
setBackgroundColor(id, widgetBgColor)
|
||||||
|
setTextColor(id, widgetTextColor)
|
||||||
|
setTextSize(id, context.getTextSize() / context.resources.displayMetrics.density)
|
||||||
|
setViewVisibility(id, View.GONE)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
mRemoteViews.setViewVisibility(getProperTextView(context), View.VISIBLE)
|
views.setViewVisibility(getProperTextView(context), View.VISIBLE)
|
||||||
|
appWidgetManager.updateAppWidget(it, views)
|
||||||
for (widgetId in appWidgetIds) {
|
|
||||||
updateWidget(appWidgetManager, widgetId, mRemoteViews, context)
|
|
||||||
}
|
}
|
||||||
super.onUpdate(context, appWidgetManager, appWidgetIds)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getComponentName(context: Context) = ComponentName(context, MyWidgetProvider::class.java)
|
||||||
|
|
||||||
private fun getProperTextView(context: Context) = when (context.config.gravity) {
|
private fun getProperTextView(context: Context) = when (context.config.gravity) {
|
||||||
GRAVITY_CENTER -> R.id.notes_view_center
|
GRAVITY_CENTER -> R.id.notes_view_center
|
||||||
GRAVITY_RIGHT -> R.id.notes_view_right
|
GRAVITY_RIGHT -> R.id.notes_view_right
|
||||||
else -> R.id.notes_view_left
|
else -> R.id.notes_view_left
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initVariables(context: Context) {
|
private fun setupAppOpenIntent(context: Context, views: RemoteViews, id: Int) {
|
||||||
mDb = context.dbHelper
|
|
||||||
mRemoteViews = RemoteViews(context.packageName, widget)
|
|
||||||
setupAppOpenIntent(R.id.notes_holder, context)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupAppOpenIntent(id: Int, context: Context) {
|
|
||||||
val widgetId = context.config.widgetNoteId
|
val widgetId = context.config.widgetNoteId
|
||||||
Intent(context, SplashActivity::class.java).apply {
|
val intent = Intent(context, SplashActivity::class.java)
|
||||||
putExtra(OPEN_NOTE_ID, widgetId)
|
intent.putExtra(OPEN_NOTE_ID, widgetId)
|
||||||
val pendingIntent = PendingIntent.getActivity(context, widgetId, this, 0)
|
val pendingIntent = PendingIntent.getActivity(context, widgetId, intent, 0)
|
||||||
mRemoteViews.setOnClickPendingIntent(id, pendingIntent)
|
views.setOnClickPendingIntent(id, pendingIntent)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateWidget(widgetManager: AppWidgetManager, widgetId: Int, remoteViews: RemoteViews, context: Context) {
|
|
||||||
val note = mDb.getNote(context.config.widgetNoteId)
|
|
||||||
for (id in textIds) {
|
|
||||||
if (note != null)
|
|
||||||
remoteViews.setText(id, context.getNoteStoredValue(note)!!)
|
|
||||||
}
|
|
||||||
widgetManager.updateAppWidget(widgetId, remoteViews)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user