diff options
author | Allan Wang <me@allanwang.ca> | 2017-12-29 19:39:04 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-29 19:39:04 -0500 |
commit | 32e6b5be0e662bbac22806bcc87259fd1a2e2ed0 (patch) | |
tree | c97f7ef11b60231bbe7337f5960413b95da0a8c2 /app/src/main/kotlin/com/pitchedapps/frost/iitems | |
parent | 8fee0629c27edee847358efc82309118f3a9a3a5 (diff) | |
download | frost-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.kt | 83 |
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 |