From b8f18f9ae9d4a2b1d83ebb2a9dacd44266cd7ad9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 9 Dec 2018 17:14:01 +0100 Subject: [PATCH] adding some checklist widget handling --- .../notes/pro/adapters/WidgetAdapter.kt | 45 ++++++++++++------- .../main/res/layout/item_checklist_widget.xml | 14 ++++++ 2 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 app/src/main/res/layout/item_checklist_widget.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt index 2c9050de..ba041846 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt @@ -5,6 +5,8 @@ import android.content.Intent import android.view.View import android.widget.RemoteViews 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.setTextSize 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.getTextSize import com.simplemobiletools.notes.pro.extensions.notesDB -import com.simplemobiletools.notes.pro.helpers.GRAVITY_CENTER -import com.simplemobiletools.notes.pro.helpers.GRAVITY_RIGHT -import com.simplemobiletools.notes.pro.helpers.NOTE_ID -import com.simplemobiletools.notes.pro.helpers.OPEN_NOTE_ID +import com.simplemobiletools.notes.pro.helpers.* +import com.simplemobiletools.notes.pro.models.ChecklistItem 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) @@ -23,27 +23,38 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi override fun getViewAt(position: Int): RemoteViews { val noteId = intent.getLongExtra(NOTE_ID, 0L) - val views = RemoteViews(context.packageName, R.layout.widget_text_layout).apply { - val note = context.notesDB.getNoteWithId(noteId) - if (note != null) { + val remoteView: RemoteViews + + 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>() {}.type + val items = Gson().fromJson>(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 textSize = context.getTextSize() / context.resources.displayMetrics.density for (id in textIds) { setText(id, noteText) setTextColor(id, widgetTextColor) setTextSize(id, textSize) 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) { @@ -66,7 +77,7 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi override fun getCount() = 1 - override fun getViewTypeCount() = 1 + override fun getViewTypeCount() = 2 override fun onDestroy() {} } diff --git a/app/src/main/res/layout/item_checklist_widget.xml b/app/src/main/res/layout/item_checklist_widget.xml new file mode 100644 index 00000000..6166310d --- /dev/null +++ b/app/src/main/res/layout/item_checklist_widget.xml @@ -0,0 +1,14 @@ + +