mirror of
https://github.com/SimpleMobileTools/Simple-Notes.git
synced 2025-02-02 23:27:33 +01:00
adding some checklist widget handling
This commit is contained in:
parent
2e13deaf53
commit
b8f18f9ae9
@ -5,6 +5,8 @@ import android.content.Intent
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import android.widget.RemoteViewsService
|
import android.widget.RemoteViewsService
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.google.gson.reflect.TypeToken
|
||||||
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.pro.R
|
import com.simplemobiletools.notes.pro.R
|
||||||
@ -12,10 +14,8 @@ import com.simplemobiletools.notes.pro.R.id.widget_text_holder
|
|||||||
import com.simplemobiletools.notes.pro.extensions.config
|
import com.simplemobiletools.notes.pro.extensions.config
|
||||||
import com.simplemobiletools.notes.pro.extensions.getTextSize
|
import com.simplemobiletools.notes.pro.extensions.getTextSize
|
||||||
import com.simplemobiletools.notes.pro.extensions.notesDB
|
import com.simplemobiletools.notes.pro.extensions.notesDB
|
||||||
import com.simplemobiletools.notes.pro.helpers.GRAVITY_CENTER
|
import com.simplemobiletools.notes.pro.helpers.*
|
||||||
import com.simplemobiletools.notes.pro.helpers.GRAVITY_RIGHT
|
import com.simplemobiletools.notes.pro.models.ChecklistItem
|
||||||
import com.simplemobiletools.notes.pro.helpers.NOTE_ID
|
|
||||||
import com.simplemobiletools.notes.pro.helpers.OPEN_NOTE_ID
|
|
||||||
|
|
||||||
class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsService.RemoteViewsFactory {
|
class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsService.RemoteViewsFactory {
|
||||||
private val textIds = arrayOf(R.id.widget_text_left, R.id.widget_text_center, R.id.widget_text_right)
|
private val textIds = arrayOf(R.id.widget_text_left, R.id.widget_text_center, R.id.widget_text_right)
|
||||||
@ -23,27 +23,38 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi
|
|||||||
|
|
||||||
override fun getViewAt(position: Int): RemoteViews {
|
override fun getViewAt(position: Int): RemoteViews {
|
||||||
val noteId = intent.getLongExtra(NOTE_ID, 0L)
|
val noteId = intent.getLongExtra(NOTE_ID, 0L)
|
||||||
val views = RemoteViews(context.packageName, R.layout.widget_text_layout).apply {
|
val remoteView: RemoteViews
|
||||||
val note = context.notesDB.getNoteWithId(noteId)
|
|
||||||
if (note != null) {
|
val note = context.notesDB.getNoteWithId(noteId) ?: return RemoteViews(context.packageName, R.layout.widget_text_layout)
|
||||||
|
|
||||||
|
val textSize = context.getTextSize() / context.resources.displayMetrics.density
|
||||||
|
if (note.type == TYPE_CHECKLIST) {
|
||||||
|
val checklistItemType = object : TypeToken<List<ChecklistItem>>() {}.type
|
||||||
|
val items = Gson().fromJson<ArrayList<ChecklistItem>>(note.value, checklistItemType) ?: ArrayList(1)
|
||||||
|
remoteView = RemoteViews(context.packageName, R.layout.item_checklist_widget).apply {
|
||||||
|
setText(R.id.checklist_title, items.getOrNull(position)?.title ?: "")
|
||||||
|
setTextColor(R.id.checklist_title, widgetTextColor)
|
||||||
|
setTextSize(R.id.checklist_title, textSize)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
remoteView = RemoteViews(context.packageName, R.layout.widget_text_layout).apply {
|
||||||
val noteText = note.getNoteStoredValue() ?: ""
|
val noteText = note.getNoteStoredValue() ?: ""
|
||||||
val textSize = context.getTextSize() / context.resources.displayMetrics.density
|
|
||||||
for (id in textIds) {
|
for (id in textIds) {
|
||||||
setText(id, noteText)
|
setText(id, noteText)
|
||||||
setTextColor(id, widgetTextColor)
|
setTextColor(id, widgetTextColor)
|
||||||
setTextSize(id, textSize)
|
setTextSize(id, textSize)
|
||||||
setViewVisibility(id, View.GONE)
|
setViewVisibility(id, View.GONE)
|
||||||
}
|
}
|
||||||
|
setViewVisibility(getProperTextView(context), View.VISIBLE)
|
||||||
}
|
}
|
||||||
|
|
||||||
Intent().apply {
|
|
||||||
putExtra(OPEN_NOTE_ID, noteId)
|
|
||||||
setOnClickFillInIntent(widget_text_holder, this)
|
|
||||||
}
|
|
||||||
|
|
||||||
setViewVisibility(getProperTextView(context), View.VISIBLE)
|
|
||||||
}
|
}
|
||||||
return views
|
|
||||||
|
Intent().apply {
|
||||||
|
putExtra(OPEN_NOTE_ID, noteId)
|
||||||
|
remoteView.setOnClickFillInIntent(widget_text_holder, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
return remoteView
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getProperTextView(context: Context) = when (context.config.gravity) {
|
private fun getProperTextView(context: Context) = when (context.config.gravity) {
|
||||||
@ -66,7 +77,7 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi
|
|||||||
|
|
||||||
override fun getCount() = 1
|
override fun getCount() = 1
|
||||||
|
|
||||||
override fun getViewTypeCount() = 1
|
override fun getViewTypeCount() = 2
|
||||||
|
|
||||||
override fun onDestroy() {}
|
override fun onDestroy() {}
|
||||||
}
|
}
|
||||||
|
14
app/src/main/res/layout/item_checklist_widget.xml
Normal file
14
app/src/main/res/layout/item_checklist_widget.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TextView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/checklist_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:layout_marginRight="@dimen/medium_margin"
|
||||||
|
android:layout_toLeftOf="@+id/checklist_image"
|
||||||
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
|
android:textSize="@dimen/bigger_text_size"
|
||||||
|
tools:text="Butter"/>
|
Loading…
x
Reference in New Issue
Block a user