From 32e6b5be0e662bbac22806bcc87259fd1a2e2ed0 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Fri, 29 Dec 2017 19:39:04 -0500 Subject: 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 --- .../pitchedapps/frost/iitems/NotificationIItem.kt | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt (limited to 'app/src/main/kotlin/com/pitchedapps/frost/iitems') 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( + R.layout.iitem_notification, ::ViewHolder +) { + + companion object { + fun bindEvents(adapter: ItemAdapter) { + 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(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) { + 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 -- cgit v1.2.3