aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/iitems
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2017-12-29 19:39:04 -0500
committerGitHub <noreply@github.com>2017-12-29 19:39:04 -0500
commit32e6b5be0e662bbac22806bcc87259fd1a2e2ed0 (patch)
treec97f7ef11b60231bbe7337f5960413b95da0a8c2 /app/src/main/kotlin/com/pitchedapps/frost/iitems
parent8fee0629c27edee847358efc82309118f3a9a3a5 (diff)
downloadfrost-32e6b5be0e662bbac22806bcc87259fd1a2e2ed0.tar.gz
frost-32e6b5be0e662bbac22806bcc87259fd1a2e2ed0.tar.bz2
frost-32e6b5be0e662bbac22806bcc87259fd1a2e2ed0.zip
Feature/native notifs (#579)
* Improve parser and add zip test * Remove ActivityOptionsCompat, resolves #555 * Create native notifs * Add animations * Add image rounder * Improve glide transformations * Add request service * Fix parser * Fix parser * Add thumbnail and fix notification text * Update parsers and regex * Auto mark as read * Add request implementation in pending intent * Remove unnecessary return data * Simplify command retrieval * Use name keys instead * Revamp all bundle calls * Fix up thumbnail layout
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/iitems')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt83
1 files changed, 83 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt
new file mode 100644
index 00000000..c7f61351
--- /dev/null
+++ b/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt
@@ -0,0 +1,83 @@
+package com.pitchedapps.frost.iitems
+
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import ca.allanwang.kau.iitems.KauIItem
+import ca.allanwang.kau.ui.createSimpleRippleDrawable
+import ca.allanwang.kau.utils.*
+import com.bumptech.glide.Glide
+import com.mikepenz.fastadapter.FastAdapter
+import com.mikepenz.fastadapter.adapters.ItemAdapter
+import com.pitchedapps.frost.R
+import com.pitchedapps.frost.glide.FrostGlide
+import com.pitchedapps.frost.glide.transform
+import com.pitchedapps.frost.parsers.FrostNotif
+import com.pitchedapps.frost.services.FrostRunnable
+import com.pitchedapps.frost.utils.Prefs
+import com.pitchedapps.frost.utils.launchWebOverlay
+
+/**
+ * Created by Allan Wang on 27/12/17.
+ */
+class NotificationIItem(val notification: FrostNotif, val cookie: String) : KauIItem<NotificationIItem, NotificationIItem.ViewHolder>(
+ R.layout.iitem_notification, ::ViewHolder
+) {
+
+ companion object {
+ fun bindEvents(adapter: ItemAdapter<NotificationIItem>) {
+ adapter.fastAdapter.withSelectable(false)
+ .withOnClickListener { v, _, item, position ->
+ val notif = item.notification
+ if (notif.unread) {
+ FrostRunnable.markNotificationRead(v.context, notif.id, item.cookie)
+ adapter.set(position, NotificationIItem(notif.copy(unread = false), item.cookie))
+ }
+ v.context.launchWebOverlay(notif.url)
+ true
+ }
+ }
+ }
+
+ class ViewHolder(itemView: View) : FastAdapter.ViewHolder<NotificationIItem>(itemView) {
+
+ val frame: ViewGroup by bindView(R.id.item_frame)
+ val avatar: ImageView by bindView(R.id.item_avatar)
+ val content: TextView by bindView(R.id.item_content)
+ val date: TextView by bindView(R.id.item_date)
+ val thumbnail: ImageView by bindView(R.id.item_thumbnail)
+
+ private val glide
+ get() = Glide.with(itemView)
+
+ override fun bindView(item: NotificationIItem, payloads: MutableList<Any>) {
+ val notif = item.notification
+ frame.background = createSimpleRippleDrawable(Prefs.textColor,
+ Prefs.bgColor.colorToForeground(if (notif.unread) 0.7f else 0.0f)
+ .withAlpha(30))
+ content.setTextColor(Prefs.textColor)
+ date.setTextColor(Prefs.textColor.withAlpha(150))
+
+ val glide = glide
+ glide.load(notif.img)
+ .transform(FrostGlide.roundCorner)
+ .into(avatar)
+ if (notif.thumbnailUrl != null)
+ glide.load(notif.thumbnailUrl).into(thumbnail.visible())
+
+ content.text = notif.content
+ date.text = notif.timeString
+ }
+
+ override fun unbindView(item: NotificationIItem) {
+ frame.background = null
+ val glide = glide
+ glide.clear(avatar)
+ glide.clear(thumbnail)
+ thumbnail.gone()
+ content.text = null
+ date.text = null
+ }
+ }
+} \ No newline at end of file