From 0f86f44b3378675a3589b5eb0db7190399b060cf Mon Sep 17 00:00:00 2001 From: Carl Vuorinen Date: Tue, 9 Apr 2019 22:15:44 +0300 Subject: [PATCH] Create notification item view and implement few notification types --- .../res/drawable-hdpi/notification_close.webp | Bin 0 -> 154 bytes .../notification_stat_sparkles.webp | Bin 0 -> 712 bytes .../drawable-hdpi/notifications_bailey.webp | Bin 0 -> 3648 bytes .../res/drawable-mdpi/notification_close.webp | Bin 0 -> 138 bytes .../notification_stat_sparkles.webp | Bin 0 -> 522 bytes .../drawable-mdpi/notifications_bailey.webp | Bin 0 -> 432 bytes .../drawable-xhdpi/notification_close.webp | Bin 0 -> 190 bytes .../notification_stat_sparkles.webp | Bin 0 -> 960 bytes .../drawable-xhdpi/notifications_bailey.webp | Bin 0 -> 4588 bytes .../drawable-xxhdpi/notification_close.webp | Bin 0 -> 224 bytes .../notification_stat_sparkles.webp | Bin 0 -> 1170 bytes .../drawable-xxhdpi/notifications_bailey.webp | Bin 0 -> 5210 bytes Habitica/res/layout/notification_item.xml | 40 +++++++++++ Habitica/res/values/strings.xml | 3 + .../ui/activities/NotificationsActivity.kt | 66 +++++++++++++++++- 15 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 Habitica/res/drawable-hdpi/notification_close.webp create mode 100644 Habitica/res/drawable-hdpi/notification_stat_sparkles.webp create mode 100644 Habitica/res/drawable-hdpi/notifications_bailey.webp create mode 100644 Habitica/res/drawable-mdpi/notification_close.webp create mode 100644 Habitica/res/drawable-mdpi/notification_stat_sparkles.webp create mode 100644 Habitica/res/drawable-mdpi/notifications_bailey.webp create mode 100644 Habitica/res/drawable-xhdpi/notification_close.webp create mode 100644 Habitica/res/drawable-xhdpi/notification_stat_sparkles.webp create mode 100644 Habitica/res/drawable-xhdpi/notifications_bailey.webp create mode 100644 Habitica/res/drawable-xxhdpi/notification_close.webp create mode 100644 Habitica/res/drawable-xxhdpi/notification_stat_sparkles.webp create mode 100644 Habitica/res/drawable-xxhdpi/notifications_bailey.webp create mode 100644 Habitica/res/layout/notification_item.xml diff --git a/Habitica/res/drawable-hdpi/notification_close.webp b/Habitica/res/drawable-hdpi/notification_close.webp new file mode 100644 index 0000000000000000000000000000000000000000..e5cc8a9aa6903a93624b246365fb9fb92f4cd704 GIT binary patch literal 154 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 S-AJ3VwiscLNShe{7aag^F{?!Y literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/notification_close.webp b/Habitica/res/drawable-mdpi/notification_close.webp new file mode 100644 index 0000000000000000000000000000000000000000..f6626764cd12f26c0bd4b969955904e72cad12bb GIT binary patch literal 138 zcmV;50CoRTNk&G300012MM6+kP&iC>0000l3%~*pKR}pmRDYBa-tRQXq-`>oe<3rt zmrU9w^Y3Tcb`1q>+b}&CioE1XVIU?2(3*Ape`0uI6l@wvaxAMSy7b-T58@1fL$F#1 sN8n9F|KkyCWffW^0aAq_*Z^i2o7X1(=RK1poj5 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/notification_stat_sparkles.webp b/Habitica/res/drawable-mdpi/notification_stat_sparkles.webp new file mode 100644 index 0000000000000000000000000000000000000000..833675744514c14b66633f76a97fa9ffb74114a1 GIT binary patch literal 522 zcmV+l0`>h;Nk&Ej0ssJ4MM6+kP&iEX0RR9mAHW9?Pva)GZL3-5L5X^lAR%=Gq>q3I z_}*iKQ6x!Hau04~p#lF-Ofbzhk|Zbn0_8#iL`4w9k0sY_Y}=~xui)+$KC(}09ncju z5mSW6?(X{J|A5s5IPd{IT{fZ-h?u_sd7xVWi}0fa;KQZ>d|^wFa)TQ>Rb0GbC~kd3 z2}a%_D!z@xmAv%!*vfW&Ewf96N2V+k0kzx_A8reo16HOg_dorC1SK z{f~rokN9Ovn?iysfRAPpUijc81t8l%xZ_bEij+S}scPH??rmxQC)axa@6Re-oYxKB zAG<`RFvb*WBgI=#TyoE;C@zzb`Q+}Z!dx@+ zy-roMJ9gH(k*o9jp#o_4or1BwVwHf}PUzBPz9+lz_$K&y^TU;U%h{xlBNJ1Fk3&le| MNcF@$kQ~FZ1^+1e>Hq)$ literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/notifications_bailey.webp b/Habitica/res/drawable-mdpi/notifications_bailey.webp new file mode 100644 index 0000000000000000000000000000000000000000..819d7c02e74afecd2353331f5c1b8ec571b9cbed GIT binary patch literal 432 zcmV;h0Z;x?Nk&Gf0RRA3MM6+kP&iDS0RR9mC%_93@4&XUwkG79p<)&mVkl<8vv{3^#QEy}Z0|4Ov|4k$r5)$o_HH!Bl z#$HBMh(QoN`)2sdcN}mY&1<*%=^l?2XIdHxcp+##9gMF4T?k7_!$l@YKDpY;AThFS zw{5=c2gN4@8;~J}{tHDCKU}~$5&fTlayV70tVIVkJ)bW0_h!1#vuKCvuidGFo&z*! zc#%zoAT5XM0Sy{HHX%sMkJh5W%*AgnetYp-2+}jnT>P_JXBG;2j*%x|QUOL5+M$DK zeHRz$S~_xZ(c6)h&3f*1jQj-_03#iD(!t)2v^Kq%PHGFNrWez}TrHb5&0I{U%@lMp zEeC7SnUSDFZ-90LlOyMFGw5x2RiQT+Nz3k9RR67N(AxkSjHDMoJ;P-BM{q7k agTWUYdV{q5cuiMR0KNJ@0A*8o=wkrE0Kv8Z literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/notification_close.webp b/Habitica/res/drawable-xhdpi/notification_close.webp new file mode 100644 index 0000000000000000000000000000000000000000..13f76d4400f92ecf86483e7b9f7fa912d75844bc GIT binary patch literal 190 zcmV;v073s!Nk&Gt00012MM6+kP&iDg0000l7r+G&N1&i>8^-0&qbPT17)aYDn|~dX z`721vp_oI(MG zfUj}byN85`{wr|XM%lrbe}N9>RKVTv3o|AahD+N+A3`B(|H_5&)3Du#h5Z;CcQ$3j sn9!P30D~+B7S$2vY^nqPFqiI81%*I`9{t|^nfS9h-5L6`^=Izy0_|5>-v9sr literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/notification_stat_sparkles.webp b/Habitica/res/drawable-xhdpi/notification_stat_sparkles.webp new file mode 100644 index 0000000000000000000000000000000000000000..848b9e2a37196b5e7eb75da34534c640806dee21 GIT binary patch literal 960 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 WuES<2mVomU)Y=@2t-79PxiL46Ep#CO literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/notification_close.webp b/Habitica/res/drawable-xxhdpi/notification_close.webp new file mode 100644 index 0000000000000000000000000000000000000000..11b44d76a9ca3f7a6fc81bfce44d104153674b75 GIT binary patch literal 224 zcmV<603ZKSNk&H400012MM6+kP&iD?0000lBftm{H$aeWQ-JwHTkZjvlqtwmIuL$nigRZxj z0gEOxVKGm4cXx>X%9B8=4eszx@cBYdZ{QRAT*F&OcKh-7yWZnM`1^OI<3j$vQ9G%F z-kDq$FcDO&e}Uom?dJk3PUzP0)sLi*dQ_WjF(a7kQfmF3KPCSrnd@gPgpU=q;l7jjYL;V z{44saS6A=4zw75-zMdZ0=kpbQ*uW7bz98TJFbgq_Xa*2GWELKC%qI?_=*HSoX%Es6$p(L#vfF8_uwdkD-o z){w$2fI^_Cp~m2fnN`Tzw#|^7ckSIc+1OatDzhiS=E_y zRvb|gc`mFQQ8k!*RvbwY4Lz{#Bn@L;(d$5<58KgR&pIN2f~p4pLt>pSGZ{@8Ox8X;fgmdCSm&i)m-C-`KEl(F>UW!9qZ>A zQYZ^G0Mm}HRkdvqO#LZ;Y5`WBT&rUHG8p?(O8HU`Fl*l`KRf2a;4f0jFS>xKhgNyn zItM1dmBDYd0n0p`gxNnFei(qQE~}=R^BfANYCq~(%sJl=bBjJJ_*?|d8~Ezw1_7^s`}qAD z+L!VpFudT8hd%`{araEqfM+hxVCEE9_}Aet=zinyhA{k-QvL(wucVZ()Lf?mzvM3{ zy%M-cMUgC0b6eb|0-vDtiV)%o6^ic(A?{IjS_Gda?3TkVy3Pyd^F&>K8gL0by-ZO4 zoq+HfxRX!JrMm&)H*oh7B{ziH8-(EO69rGsg4S~neLOq|dapk4@Zc(FzUFcbWIu9v k1iH^SoFNSNg%I~a`FSD4dD8G$JO=F-#0BDT6aU!)08orOUH||9 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/notifications_bailey.webp b/Habitica/res/drawable-xxhdpi/notifications_bailey.webp new file mode 100644 index 0000000000000000000000000000000000000000..71f224020bc7b4d0e83f8d3b14a9a2e2b44ff4e1 GIT binary patch literal 5210 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 UNv!hepQW|{40##;Oa9LQ01>CUa{vGU literal 0 HcmV?d00001 diff --git a/Habitica/res/layout/notification_item.xml b/Habitica/res/layout/notification_item.xml new file mode 100644 index 000000000..3eed1db07 --- /dev/null +++ b/Habitica/res/layout/notification_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 0f12a9006..16b8f1061 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -863,6 +863,9 @@ You’re all caught up! The notification fairies give you a raucous round of applause! Well done! Dismiss All + New Bailey Update! + %1$s has new posts]]> + %1$s unallocated Stat Points]]> Create Only leader can create Challenges Create Party diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt index 6ccc55d48..00b5c789a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt @@ -2,15 +2,17 @@ package com.habitrpg.android.habitica.ui.activities import android.content.Context import android.os.Bundle +import android.text.Html import android.view.LayoutInflater import android.view.View import android.widget.Button +import android.widget.ImageView import android.widget.TextView import androidx.lifecycle.ViewModelProviders import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.AppComponent import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.notifications.GlobalNotification +import com.habitrpg.android.habitica.models.notifications.* import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel import io.reactivex.functions.Consumer import kotlinx.android.synthetic.main.activity_notifications.* @@ -87,7 +89,10 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget notifications.map { val item: View? = when (it.type) { - //TODO("not implemented") + NotificationType.NEW_CHAT_MESSAGE.type -> createNewChatMessageNotification(it) + NotificationType.NEW_STUFF.type -> createNewStuffNotification(it) + NotificationType.UNALLOCATED_STATS_POINTS.type -> createUnallocatedStatsNotification(it) + //TODO rest of the notification types else -> null } @@ -106,4 +111,61 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget return header } + + private fun createNewChatMessageNotification(notification: GlobalNotification): View? { + val data = notification.getData() as? NewChatMessageData + + return createNotificationItem( + notification, + fromHtml(getString(R.string.new_msg_guild, data?.group?.name)) + ) + } + + private fun createNewStuffNotification(notification: GlobalNotification): View? { + val data = notification.getData() as? NewStuffData + val text = fromHtml("" + getString(R.string.new_bailey_update) + "
" + data?.title) + + return createNotificationItem( + notification, + text, + R.drawable.notifications_bailey + ) + } + + private fun createUnallocatedStatsNotification(notification: GlobalNotification): View? { + val data = notification.getData() as? UnallocatedPointsData + + return createNotificationItem( + notification, + fromHtml(getString(R.string.unallocated_stats_points, data?.points.toString())), + R.drawable.notification_stat_sparkles + ) + } + + private fun createNotificationItem(notification: GlobalNotification, messageText: CharSequence, imageResourceId: Int? = null): View? { + val item = inflater.inflate(R.layout.notification_item, notification_items, false) + + val dismissButton = item?.findViewById(R.id.dismiss_button) as? ImageView + dismissButton?.setOnClickListener({ viewModel.dismissNotification(notification) }) + + val messageTextView = item?.findViewById(R.id.message_text) as? TextView + messageTextView?.text = messageText + + if (imageResourceId != null) { + val notificationImage = item?.findViewById(R.id.notification_image) as? ImageView + notificationImage?.setImageResource(imageResourceId) + notificationImage?.visibility = View.VISIBLE + } + + return item + } + + private fun fromHtml(text: String): CharSequence { + return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY) + } else { + @Suppress("DEPRECATION") + Html.fromHtml(text) + } + } }